Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.1/patches/2237969/?format=api
{ "id": 2237969, "url": "http://patchwork.ozlabs.org/api/1.1/patches/2237969/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/bmm.hihq3sdm4a.gcc.gcc-TEST.karmea01.158.1.3@forge-stage.sourceware.org/", "project": { "id": 17, "url": "http://patchwork.ozlabs.org/api/1.1/projects/17/?format=api", "name": "GNU Compiler Collection", "link_name": "gcc", "list_id": "gcc-patches.gcc.gnu.org", "list_email": "gcc-patches@gcc.gnu.org", "web_url": null, "scm_url": null, "webscm_url": null }, "msgid": "<bmm.hihq3sdm4a.gcc.gcc-TEST.karmea01.158.1.3@forge-stage.sourceware.org>", "date": "2026-05-13T16:04:13", "name": "[v1,3/6] aarch64: Port NEON vector manipulation intrinsics to pragma-based framework", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "9a7feac48105008f608e4a8a3d548b8630b09aaf", "submitter": { "id": 92188, "url": "http://patchwork.ozlabs.org/api/1.1/people/92188/?format=api", "name": "Karl Meakin via Sourceware Forge", "email": "forge-bot+karmea01@forge-stage.sourceware.org" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/bmm.hihq3sdm4a.gcc.gcc-TEST.karmea01.158.1.3@forge-stage.sourceware.org/mbox/", "series": [ { "id": 504183, "url": "http://patchwork.ozlabs.org/api/1.1/series/504183/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=504183", "date": "2026-05-13T16:04:10", "name": "aarch64: port NEON intrinsics to pragma-based framework", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/504183/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2237969/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2237969/checks/", "tags": {}, "headers": { "Return-Path": "<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "gcc-patches@gcc.gnu.org" ], "Delivered-To": [ "patchwork-incoming@legolas.ozlabs.org", "gcc-patches@gcc.gnu.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)", "sourceware.org; dmarc=none (p=none dis=none)\n header.from=forge-stage.sourceware.org", "sourceware.org;\n spf=pass smtp.mailfrom=forge-stage.sourceware.org", "sourceware.org;\n arc=none smtp.remote-ip=2620:52:6:3111::39" ], "Received": [ "from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4gG0K61fM8z1y5L\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 14 May 2026 03:08:10 +1000 (AEST)", "from vm01.sourceware.org (localhost [IPv6:::1])\n\tby sourceware.org (Postfix) with ESMTP id 239714BBC0A8\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 13 May 2026 17:08:08 +0000 (GMT)", "from forge-stage.sourceware.org (vm08.sourceware.org\n [IPv6:2620:52:6:3111::39])\n by sourceware.org (Postfix) with ESMTPS id B9BB84BBC0A4\n for <gcc-patches@gcc.gnu.org>; Wed, 13 May 2026 16:05:10 +0000 (GMT)", "from forge-stage.sourceware.org (localhost [IPv6:::1])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256)\n (No client certificate requested)\n by forge-stage.sourceware.org (Postfix) with ESMTPS id 7776742D17;\n Wed, 13 May 2026 16:05:10 +0000 (UTC)" ], "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 sourceware.org 239714BBC0A8", "OpenDKIM Filter v2.11.0 sourceware.org B9BB84BBC0A4" ], "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org B9BB84BBC0A4", "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org B9BB84BBC0A4", "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1778688310; cv=none;\n b=mg+taP3ND5Z+EFFywtSi22R6xkP93vr4KzGu+H3SVGiRzVbvDsz+Ga7PW4i80aHkYbKaxvBIkoyLyY55pGfkgvA5jpATnTIeznCIa+sE5pwRPDmNy/tSFsCsckqj06IKogScsEhWpmHhONomuPdsPSClaTSn6nJQGUYkZNDvt4c=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1778688310; c=relaxed/simple;\n bh=1rNhGF4bYR+DA9nBNEcUCvxv5Dd3xiGfSMsrYJJB56g=;\n h=From:Date:Subject:To:Message-ID;\n b=GpzGKK/QFqyVnFp/RazvVqbAqaaWpWGuyJgufij+SwFcRPFsphK6/wFQ0WkFwcyJQgU43IPA0kxwAqEWR9huCdohtRGCYgYcpQ+yNdgBSk6Tp8tUFLl3DH8tW3pD+SnMpakDkRufBJ0Jf2idkN34QYysZ+r7YLUAHhtRhTugwLg=", "ARC-Authentication-Results": "i=1; sourceware.org", "From": "Karl Meakin via Sourceware Forge\n <forge-bot+karmea01@forge-stage.sourceware.org>", "Date": "Wed, 13 May 2026 16:04:13 +0000", "Subject": "[PATCH v1 3/6] aarch64: Port NEON vector manipulation intrinsics to\n pragma-based framework", "To": "gcc-patches mailing list <gcc-patches@gcc.gnu.org>", "Cc": "ktkachov@nvidia.com, richard.earnshaw@arm.com, tamar.christina@arm.com,\n karl.meakin@arm.com", "Message-ID": "\n <bmm.hihq3sdm4a.gcc.gcc-TEST.karmea01.158.1.3@forge-stage.sourceware.org>", "X-Mailer": "batrachomyomachia", "X-Pull-Request-Organization": "gcc", "X-Pull-Request-Repository": "gcc-TEST", "X-Pull-Request": "https://forge.sourceware.org/gcc/gcc-TEST/pulls/158", "References": "\n <bmm.hihq3sdm4a.gcc.gcc-TEST.karmea01.158.1.0@forge-stage.sourceware.org>", "In-Reply-To": "\n <bmm.hihq3sdm4a.gcc.gcc-TEST.karmea01.158.1.0@forge-stage.sourceware.org>", "X-Patch-URL": "\n https://forge.sourceware.org/karmea01/gcc-TEST/commit/3b01731ba59ecf19d1c6e1b56adb56815bbf809a", "X-Mailman-Approved-At": "Wed, 13 May 2026 17:07:21 +0000", "X-BeenThere": "gcc-patches@gcc.gnu.org", "X-Mailman-Version": "2.1.30", "Precedence": "list", "List-Id": "Gcc-patches mailing list <gcc-patches.gcc.gnu.org>", "List-Unsubscribe": "<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>", "List-Archive": "<https://gcc.gnu.org/pipermail/gcc-patches/>", "List-Post": "<mailto:gcc-patches@gcc.gnu.org>", "List-Help": "<mailto:gcc-patches-request@gcc.gnu.org?subject=help>", "List-Subscribe": "<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>", "Reply-To": "gcc-patches mailing list <gcc-patches@gcc.gnu.org>,\n ktkachov@nvidia.com, richard.earnshaw@arm.com, tamar.christina@arm.com,\n karl.meakin@arm.com, karmea01@sourceware.org", "Errors-To": "gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org" }, "content": "From: Karl Meakin <karl.meakin@arm.com>\n\nPort the following intrinsics to the pragma-based framework:\n* vcreate\n* vcombine\n* vget_lane\n* vget_high\n* vget_low\n* vset_lane\n* vdup_lane\n* vdup_n\n* vmov_n\n* vcopy_lane\n\ngcc/ChangeLog:\n\n\t* config/aarch64/aarch64-simd-builtins.def (combine): Delete function declarations.\n\t* config/aarch64/aarch64-simd-pragma-builtins.def (vcombine_mf8, vcopy_lane_mf8,\n\tvcopyq_lane_mf8, vcopy_laneq_mf8, vcopyq_laneq_mf8, vcreate_mf8, vdup_n_mf8, vdupq_n_mf8,\n\tvdup_lane_mf8, vdupq_lane_mf8, vdup_laneq_mf8, vdupq_laneq_mf8, vmov_n_mf8, vmovq_n_mf8,\n\tvset_lane_mf8, vsetq_lane_mf8): Delete entries.\n\t* config/aarch64/aarch64-builtins.cc (AARCH64_SIMD_VGET_LOW_BUILTINS,\n\tAARCH64_SIMD_VGET_HIGH_BUILTINS, VGET_LOW_BUILTIN, VGET_HIGH_BUILTIN): Delete macros.\n\t(enum aarch64_builtins): Delete `AARCH64_SIMD_BUILTIN_LANE_CHECK`.\n\t(aarch64_init_simd_builtin_functions): Delete code that registers\n\t`__builtin_aarch64_im_lane_boundsi`.\n\t(aarch64_pragma_builtins_checker::check): Delete cases for `UNSPEC_DUP_LANE`,\n\t`UNSPEC_GET_LANE` and `UNSPEC_VEC_COPY`.\n\t(aarch64_simd_expand_builtin): Delete case for `AARCH64_SIMD_BUILTIN_LANE_CHECK`.\n\t(aarch64_expand_pragma_builtin): Delete cases for `UNSPEC_COMBINE`, `UNSPEC_DUP_LANE`,\n\t`UNSPEC_VCREATE` and `UNSPEC_VEC_COPY`.\n\t(aarch64_general_fold_builtin): Delete cases for `AARCH64_SIMD_VGET_LOW_BUILTINS`,\n\t`AARCH64_SIMD_VGET_HIGH_BUILTINS` and `AARCH64_SIMD_BUILTIN_LANE_CHECK`.\n\t(aarch64_fold_combine): Delete function.\n\t(aarch64_gimple_fold_pragma_builtin): Delete cases for `UNSPEC_COMBINE`, `UNSPEC_DUP_LANE`,\n\t`UNSPEC_VCREATE` and `UNSPEC_VEC_COPY`.\n\t(aarch64_general_gimple_fold_builtin): Delete cases for `vcombine` and\n\t`AARCH64_SIMD_BUILTIN_LANE_CHECK`.\n\t* config/aarch64/aarch64.md (UNSPEC_COMBINE, UNSPEC_DUP_LANE): Delete unspecs.\n\t* config/aarch64/aarch64-neon-builtins-shapes.cc (range, lane): New functions.\n\t(struct neon_shape): Add new fields for additional checks, and call them in `check()`.\n\t* config/aarch64/aarch64-sve-builtins.cc (gimple_folder::force_val, gimple_folder::assign):\n\tNew functions.\n\t* config/aarch64/aarch64-acle-builtins.h (TYPES_all_neon, TYPES_bhsd_neon,\n\tTYPES_neon_copy_lane): New type lists.\n\t* config/aarch64/iterators.md (VALL_F16_NO_V2Q): Add `V4BF` and `V8BF`.\n\t* config/aarch64/aarch64-neon-builtins-base.def (vcreate, vcombine, vget_lane, vgetq_lane,\n\tvget_high, vget_low, vset_lane, vsetq_lane, vdup_lane, vdupq_lane, vdup_laneq,\n\tvdupq_laneq, vdup_n, vdupq_n, vmov_n, vmovq_n, vcopy_lane, vcopy_laneq, vcopyq_lane,\n\tvcopyq_laneq): New function groups.\n\t* config/aarch64/aarch64-neon-builtins-base.cc (build_lane_get, build_lane_set,\n\tbuild_vec_dup): New functions.\n\t(struct gimple_create, struct gimple_combine, struct gimple_get_lane, struct\n\tgimple_get_half, struct gimple_set_lane, struct gimple_copy_lane, struct gimple_dup, struct\n\tgimple_dup_lane): New structs.\n\t(vcreate, vcombine, vget_lane, vgetq_lane, vset_lane, vsetq_lane, vcopy_lane, vcopyq_lane,\n\tvcopy_laneq, vcopyq_laneq, vdup_n, vdupq_n, vmov_n, vmovq_n, vdup_lane, vdupq_lane,\n\tvdupq_lane, vdupq_laneq): New function bases.\n\t* config/aarch64/arm_neon.h (__aarch64_vdup_lane_p8, __aarch64_vdup_lane_p16,\n\t__aarch64_vdup_lane_p64, __aarch64_vdup_lane_s8, __aarch64_vdup_lane_s16,\n\t__aarch64_vdup_lane_s32, __aarch64_vdup_lane_s64, __aarch64_vdup_lane_u8,\n\t__aarch64_vdup_lane_u16, __aarch64_vdup_lane_u32, __aarch64_vdup_lane_u64,\n\t__aarch64_vdup_laneq_p8, __aarch64_vdup_laneq_p16, __aarch64_vdup_laneq_p64,\n\t__aarch64_vdup_laneq_s8, __aarch64_vdup_laneq_s16, __aarch64_vdup_laneq_s32,\n\t__aarch64_vdup_laneq_s64, __aarch64_vdup_laneq_u8, __aarch64_vdup_laneq_u16,\n\t__aarch64_vdup_laneq_u32, __aarch64_vdup_laneq_u64, __aarch64_vdupq_lane_p8,\n\t__aarch64_vdupq_lane_p16, __aarch64_vdupq_lane_p64, __aarch64_vdupq_lane_s8,\n\t__aarch64_vdupq_lane_s16, __aarch64_vdupq_lane_s32, __aarch64_vdupq_lane_s64,\n\t__aarch64_vdupq_lane_u8, __aarch64_vdupq_lane_u16, __aarch64_vdupq_lane_u32,\n\t__aarch64_vdupq_lane_u64, __aarch64_vdupq_laneq_p8, __aarch64_vdupq_laneq_p16,\n\t__aarch64_vdupq_laneq_p64, __aarch64_vdupq_laneq_s8, __aarch64_vdupq_laneq_s16,\n\t__aarch64_vdupq_laneq_s32, __aarch64_vdupq_laneq_s64, __aarch64_vdupq_laneq_u8,\n\t__aarch64_vdupq_laneq_u16, __aarch64_vdupq_laneq_u32, __aarch64_vdupq_laneq_u64,\n\t__AARCH64_LANE_CHECK, __aarch64_vget_lane_any, __aarch64_vset_lane_any, vcreate_s8,\n\tvcreate_s16, vcreate_s32, vcreate_s64, vcreate_f16, vcreate_f32, vcreate_u8, vcreate_u16,\n\tvcreate_u32, vcreate_u64, vcreate_f64, vcreate_p8, vcreate_p16, vcreate_p64,\n\tvget_lane_f16, vget_lane_f32, vget_lane_f64, vget_lane_p8, vget_lane_p16, vget_lane_p64,\n\tvget_lane_s8, vget_lane_s16, vget_lane_s32, vget_lane_s64, vget_lane_u8, vget_lane_u16,\n\tvget_lane_u32, vget_lane_u64, vgetq_lane_f16, vgetq_lane_f32, vgetq_lane_f64,\n\tvgetq_lane_p8, vgetq_lane_p16, vgetq_lane_p64, vgetq_lane_s8, vgetq_lane_s16,\n\tvgetq_lane_s32, vgetq_lane_s64, vgetq_lane_u8, vgetq_lane_u16, vgetq_lane_u32,\n\tvgetq_lane_u64, vset_lane_f16, vset_lane_f32, vset_lane_f64, vset_lane_p8, vset_lane_p16,\n\tvset_lane_p64, vset_lane_s8, vset_lane_s16, vset_lane_s32, vset_lane_s64, vset_lane_u8,\n\tvset_lane_u16, vset_lane_u32, vset_lane_u64, vsetq_lane_f16, vsetq_lane_f32,\n\tvsetq_lane_f64, vsetq_lane_p8, vsetq_lane_p16, vsetq_lane_p64, vsetq_lane_s8,\n\tvsetq_lane_s16, vsetq_lane_s32, vsetq_lane_s64, vsetq_lane_u8, vsetq_lane_u16,\n\tvsetq_lane_u32, vsetq_lane_u64, vcombine_s8, vcombine_s16, vcombine_s32, vcombine_s64,\n\tvcombine_f16, vcombine_f32, vcombine_u8, vcombine_u16, vcombine_u32, vcombine_u64,\n\tvcombine_f64, vcombine_p8, vcombine_p16, vcombine_p64, vcopy_lane_f32, vcopy_lane_f64,\n\tvcopy_lane_p8, vcopy_lane_p16, vcopy_lane_p64, vcopy_lane_s8, vcopy_lane_s16,\n\tvcopy_lane_s32, vcopy_lane_s64, vcopy_lane_u8, vcopy_lane_u16, vcopy_lane_u32,\n\tvcopy_lane_u64, vcopy_laneq_f32, vcopy_laneq_f64, vcopy_laneq_p8, vcopy_laneq_p16,\n\tvcopy_laneq_p64, vcopy_laneq_s8, vcopy_laneq_s16, vcopy_laneq_s32, vcopy_laneq_s64,\n\tvcopy_laneq_u8, vcopy_laneq_u16, vcopy_laneq_u32, vcopy_laneq_u64, vcopyq_lane_f32,\n\tvcopyq_lane_f64, vcopyq_lane_p8, vcopyq_lane_p16, vcopyq_lane_p64, vcopyq_lane_s8,\n\tvcopyq_lane_s16, vcopyq_lane_s32, vcopyq_lane_s64, vcopyq_lane_u8, vcopyq_lane_u16,\n\tvcopyq_lane_u32, vcopyq_lane_u64, vcopyq_laneq_f32, vcopyq_laneq_f64, vcopyq_laneq_p8,\n\tvcopyq_laneq_p16, vcopyq_laneq_p64, vcopyq_laneq_s8, vcopyq_laneq_s16, vcopyq_laneq_s32,\n\tvcopyq_laneq_s64, vcopyq_laneq_u8, vcopyq_laneq_u16, vcopyq_laneq_u32, vcopyq_laneq_u64,\n\tvdup_n_f16, vdup_n_f32, vdup_n_f64, vdup_n_p8, vdup_n_p16, vdup_n_p64, vdup_n_s8,\n\tvdup_n_s16, vdup_n_s32, vdup_n_s64, vdup_n_u8, vdup_n_u16, vdup_n_u32, vdup_n_u64,\n\tvdupq_n_f16, vdupq_n_f32, vdupq_n_f64, vdupq_n_p8, vdupq_n_p16, vdupq_n_p64, vdupq_n_s8,\n\tvdupq_n_s16, vdupq_n_s32, vdupq_n_s64, vdupq_n_u8, vdupq_n_u16, vdupq_n_u32, vdupq_n_u64,\n\tvdup_lane_f16, vdup_lane_f32, vdup_lane_f64, vdup_lane_p8, vdup_lane_p16, vdup_lane_p64,\n\tvdup_lane_s8, vdup_lane_s16, vdup_lane_s32, vdup_lane_s64, vdup_lane_u8, vdup_lane_u16,\n\tvdup_lane_u32, vdup_lane_u64, vdup_laneq_f16, vdup_laneq_f32, vdup_laneq_f64,\n\tvdup_laneq_p8, vdup_laneq_p16, vdup_laneq_p64, vdup_laneq_s8, vdup_laneq_s16,\n\tvdup_laneq_s32, vdup_laneq_s64, vdup_laneq_u8, vdup_laneq_u16, vdup_laneq_u32,\n\tvdup_laneq_u64, vdupq_lane_f16, vdupq_lane_f32, vdupq_lane_f64, vdupq_lane_p8,\n\tvdupq_lane_p16, vdupq_lane_p64, vdupq_lane_s8, vdupq_lane_s16, vdupq_lane_s32,\n\tvdupq_lane_s64, vdupq_lane_u8, vdupq_lane_u16, vdupq_lane_u32, vdupq_lane_u64,\n\tvdupq_laneq_f16, vdupq_laneq_f32, vdupq_laneq_f64, vdupq_laneq_p8, vdupq_laneq_p16,\n\tvdupq_laneq_p64, vdupq_laneq_s8, vdupq_laneq_s16, vdupq_laneq_s32, vdupq_laneq_s64,\n\tvdupq_laneq_u8, vdupq_laneq_u16, vdupq_laneq_u32, vdupq_laneq_u64, vmov_n_f16, vmov_n_f32,\n\tvmov_n_f64, vmov_n_p8, vmov_n_p16, vmov_n_p64, vmov_n_s8, vmov_n_s16, vmov_n_s32,\n\tvmov_n_s64, vmov_n_u8, vmov_n_u16, vmov_n_u32, vmov_n_u64, vmovq_n_f16, vmovq_n_f32,\n\tvmovq_n_f64, vmovq_n_p8, vmovq_n_p16, vmovq_n_p64, vmovq_n_s8, vmovq_n_s16, vmovq_n_s32,\n\tvmovq_n_s64, vmovq_n_u8, vmovq_n_u16, vmovq_n_u32, vmovq_n_u64, vmulq_lane_f64,\n\tvset_lane_bf16, vsetq_lane_bf16, vget_lane_bf16, vgetq_lane_bf16, vcreate_bf16,\n\tvcombine_bf16, vdup_n_bf16, vdupq_n_bf16, vdup_lane_bf16, vdup_laneq_bf16,\n\tvdupq_lane_bf16, vdupq_laneq_bf16, vcopy_lane_bf16, vcopyq_lane_bf16, vcopy_laneq_bf16,\n\tvcopyq_laneq_bf16): Delete functions.\n\ngcc/testsuite/ChangeLog:\n\n\t* gcc.target/aarch64/simd/mf8_data_2.c: Fix test.\n\t* gcc.target/aarch64/simd/fold_to_highpart_6.c: Fix test.\n\t* g++.target/aarch64/lane-bound-1.C: Fix test.\n\t* gcc.target/aarch64/advsimd-intrinsics/bf16_dup.c: Fix test.\n\t* gcc.target/aarch64/advsimd-intrinsics/bf16_vect_copy_lane_1.c: Fix test.\n\t* gcc.target/aarch64/lane-bound-3.c: Fix test.\n\t* gcc.target/aarch64/pr113573.c: Fix test.\n\t* gcc.target/aarch64/simd/vset_lane_s16_const_1.c: Fix test.\n\t* gcc.target/aarch64/vmov_n_1.c: Fix test.\n\t* gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_bf16_indices_1.c,\n\tgcc.target/aarch64/advsimd-intrinsics/vcopy_lane_bf16_indices_2.c,\n\tgcc.target/aarch64/advsimd-intrinsics/vcopy_laneq_bf16_indices_1.c,\n\tgcc.target/aarch64/advsimd-intrinsics/vcopy_laneq_bf16_indices_2.c,\n\tgcc.target/aarch64/advsimd-intrinsics/vcopyq_lane_bf16_indices_1.c,\n\tgcc.target/aarch64/advsimd-intrinsics/vcopyq_lane_bf16_indices_2.c,\n\tgcc.target/aarch64/advsimd-intrinsics/vcopyq_laneq_bf16_indices_1.c,\n\tgcc.target/aarch64/advsimd-intrinsics/vcopyq_laneq_bf16_indices_2.c: Replace with...\n\tgcc.target/aarch64/advsimd-intrinsics/vcopy_lane_indices.c: ...this.\n\t* gcc.target/aarch64/simd/vget_lane_f32_indices_1.c,\n\tgcc.target/aarch64/simd/vget_lane_f64_indices_1.c,\n\tgcc.target/aarch64/simd/vget_lane_p16_indices_1.c,\n\tgcc.target/aarch64/simd/vget_lane_p8_indices_1.c,\n\tgcc.target/aarch64/simd/vget_lane_s16_indices_1.c,\n\tgcc.target/aarch64/simd/vget_lane_s32_indices_1.c,\n\tgcc.target/aarch64/simd/vget_lane_s64_indices_1.c,\n\tgcc.target/aarch64/simd/vget_lane_s8_indices_1.c,\n\tgcc.target/aarch64/simd/vget_lane_u16_indices_1.c,\n\tgcc.target/aarch64/simd/vget_lane_u32_indices_1.c,\n\tgcc.target/aarch64/simd/vget_lane_u64_indices_1.c,\n\tgcc.target/aarch64/simd/vget_lane_u8_indices_1.c,\n\tgcc.target/aarch64/simd/vgetq_lane_f32_indices_1.c,\n\tgcc.target/aarch64/simd/vgetq_lane_f64_indices_1.c,\n\tgcc.target/aarch64/simd/vgetq_lane_p16_indices_1.c,\n\tgcc.target/aarch64/simd/vgetq_lane_p8_indices_1.c,\n\tgcc.target/aarch64/simd/vgetq_lane_s16_indices_1.c,\n\tgcc.target/aarch64/simd/vgetq_lane_s32_indices_1.c,\n\tgcc.target/aarch64/simd/vgetq_lane_s64_indices_1.c,\n\tgcc.target/aarch64/simd/vgetq_lane_s8_indices_1.c,\n\tgcc.target/aarch64/simd/vgetq_lane_u16_indices_1.c,\n\tgcc.target/aarch64/simd/vgetq_lane_u32_indices_1.c,\n\tgcc.target/aarch64/simd/vgetq_lane_u64_indices_1.c,\n\tgcc.target/aarch64/simd/vgetq_lane_u8_indices_1.c: Replace with...\n\t* gcc.target/aarch64/simd/vget_lane_indices.c: ...this.\n\t* gcc.target/aarch64/neon/arm_neon_test.h(VEC_LEN): New macro.\n\t* gcc.target/aarch64/neon/vcombine.c: New test.\n\t* gcc.target/aarch64/neon/vcopy_lane.c: New test.\n\t* gcc.target/aarch64/neon/vcreate.c: New test.\n\t* gcc.target/aarch64/neon/vdup.c: New test.\n\t* gcc.target/aarch64/neon/vdup_lane.c: New test.\n\t* gcc.target/aarch64/neon/vget_lane.c: New test.\n\t* gcc.target/aarch64/neon/vmov_n.c: New test.\n\t* gcc.target/aarch64/neon/vset_lane.c: New test.\n---\n gcc/config/aarch64/aarch64-acle-builtins.h | 49 +\n gcc/config/aarch64/aarch64-builtins.cc | 189 +-\n .../aarch64/aarch64-neon-builtins-base.cc | 172 +\n .../aarch64/aarch64-neon-builtins-base.def | 38 +\n .../aarch64/aarch64-neon-builtins-shapes.cc | 63 +-\n gcc/config/aarch64/aarch64-simd-builtins.def | 3 -\n .../aarch64/aarch64-simd-pragma-builtins.def | 51 -\n gcc/config/aarch64/aarch64-sve-builtins.cc | 56 +-\n gcc/config/aarch64/aarch64.md | 5 -\n gcc/config/aarch64/arm_neon.h | 8321 ++++++-----------\n gcc/config/aarch64/iterators.md | 2 +-\n .../g++.target/aarch64/lane-bound-1.C | 2 +-\n .../aarch64/advsimd-intrinsics/bf16_dup.c | 6 +-\n .../bf16_vect_copy_lane_1.c | 3 +-\n .../vcopy_lane_bf16_indices_1.c | 18 -\n .../vcopy_lane_bf16_indices_2.c | 18 -\n .../advsimd-intrinsics/vcopy_lane_indices.c | 68 +\n .../vcopy_laneq_bf16_indices_1.c | 17 -\n .../vcopy_laneq_bf16_indices_2.c | 17 -\n .../vcopyq_lane_bf16_indices_1.c | 17 -\n .../vcopyq_lane_bf16_indices_2.c | 17 -\n .../vcopyq_laneq_bf16_indices_1.c | 17 -\n .../vcopyq_laneq_bf16_indices_2.c | 17 -\n .../gcc.target/aarch64/lane-bound-3.c | 4 +-\n .../gcc.target/aarch64/neon/arm_neon_test.h | 2 +\n .../gcc.target/aarch64/neon/vcombine.c | 120 +\n .../gcc.target/aarch64/neon/vcopy_lane.c | 428 +\n .../gcc.target/aarch64/neon/vcreate.c | 119 +\n gcc/testsuite/gcc.target/aarch64/neon/vdup.c | 226 +\n .../gcc.target/aarch64/neon/vdup_lane.c | 647 ++\n .../gcc.target/aarch64/neon/vget_high.c | 116 +\n .../gcc.target/aarch64/neon/vget_lane.c | 232 +\n .../gcc.target/aarch64/neon/vget_low.c | 100 +\n .../gcc.target/aarch64/neon/vmov_n.c | 212 +\n .../gcc.target/aarch64/neon/vset_lane.c | 234 +\n gcc/testsuite/gcc.target/aarch64/pr113573.c | 62 +-\n .../aarch64/simd/fold_to_highpart_6.c | 24 +-\n .../gcc.target/aarch64/simd/mf8_data_2.c | 1 -\n .../aarch64/simd/vget_lane_f32_indices_1.c | 17 -\n .../aarch64/simd/vget_lane_f64_indices_1.c | 17 -\n .../aarch64/simd/vget_lane_indices.c | 46 +\n .../aarch64/simd/vget_lane_p16_indices_1.c | 17 -\n .../aarch64/simd/vget_lane_p8_indices_1.c | 17 -\n .../aarch64/simd/vget_lane_s16_indices_1.c | 17 -\n .../aarch64/simd/vget_lane_s32_indices_1.c | 17 -\n .../aarch64/simd/vget_lane_s64_indices_1.c | 17 -\n .../aarch64/simd/vget_lane_s8_indices_1.c | 17 -\n .../aarch64/simd/vget_lane_u16_indices_1.c | 17 -\n .../aarch64/simd/vget_lane_u32_indices_1.c | 17 -\n .../aarch64/simd/vget_lane_u64_indices_1.c | 17 -\n .../aarch64/simd/vget_lane_u8_indices_1.c | 17 -\n .../aarch64/simd/vgetq_lane_f32_indices_1.c | 17 -\n .../aarch64/simd/vgetq_lane_f64_indices_1.c | 17 -\n .../aarch64/simd/vgetq_lane_p16_indices_1.c | 17 -\n .../aarch64/simd/vgetq_lane_p8_indices_1.c | 17 -\n .../aarch64/simd/vgetq_lane_s16_indices_1.c | 17 -\n .../aarch64/simd/vgetq_lane_s32_indices_1.c | 17 -\n .../aarch64/simd/vgetq_lane_s64_indices_1.c | 17 -\n .../aarch64/simd/vgetq_lane_s8_indices_1.c | 17 -\n .../aarch64/simd/vgetq_lane_u16_indices_1.c | 17 -\n .../aarch64/simd/vgetq_lane_u32_indices_1.c | 17 -\n .../aarch64/simd/vgetq_lane_u64_indices_1.c | 17 -\n .../aarch64/simd/vgetq_lane_u8_indices_1.c | 17 -\n .../aarch64/simd/vset_lane_s16_const_1.c | 2 +-\n gcc/testsuite/gcc.target/aarch64/vmov_n_1.c | 2 +-\n 65 files changed, 5976 insertions(+), 6175 deletions(-)\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_bf16_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_bf16_indices_2.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_indices.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_laneq_bf16_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_laneq_bf16_indices_2.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_lane_bf16_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_lane_bf16_indices_2.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_laneq_bf16_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_laneq_bf16_indices_2.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vcombine.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vcopy_lane.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vcreate.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vdup.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vdup_lane.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vget_high.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vget_lane.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vget_low.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vmov_n.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vset_lane.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vget_lane_f32_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vget_lane_f64_indices_1.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vget_lane_indices.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vget_lane_p16_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vget_lane_p8_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s16_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s32_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s64_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s8_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u16_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u32_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u64_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u8_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_f32_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_f64_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_p16_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_p8_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s16_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s32_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s64_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s8_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u16_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u32_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u64_indices_1.c\n delete mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u8_indices_1.c", "diff": "diff --git a/gcc/config/aarch64/aarch64-acle-builtins.h b/gcc/config/aarch64/aarch64-acle-builtins.h\nindex f0511456313e..76b565adba5d 100644\n--- a/gcc/config/aarch64/aarch64-acle-builtins.h\n+++ b/gcc/config/aarch64/aarch64-acle-builtins.h\n@@ -659,6 +659,11 @@ public:\n gimple *convert_and_fold (tree, gimple *(*) (gimple_folder &,\n \t\t\t\t\t tree, vec<tree> &));\n \n+ tree force_val (tree expr);\n+ gassign *assign (tree lhs, tree rhs);\n+ gassign *assign (tree lhs, tree_code code, tree rhs1, tree rhs2 = NULL_TREE,\n+\t\t tree rhs3 = NULL_TREE);\n+\n gimple *fold_to_cstu (poly_uint64);\n gimple *fold_to_pfalse ();\n gimple *fold_to_ptrue ();\n@@ -1305,6 +1310,10 @@ void build_all (function_builder &b, const char *signature,\n D (s16, s8), D (s32, s16), D (s64, s32), \\\n D (u16, u8), D (u32, u16), D (u64, u32)\n \n+/* _mf8. */\n+#define TYPES_b_float(S, D, T) \\\n+ S (mf8)\n+\n /* _bf16. */\n #define TYPES_h_bfloat(S, D, T) \\\n S (bf16)\n@@ -1763,6 +1772,18 @@ void build_all (function_builder &b, const char *signature,\n #define TYPES_za(S, D, T) \\\n S (za)\n \n+/* _p16 _s16 _u16 _f16 _bf16. */\n+#define TYPES_h_neon(S, D, T) \\\n+ S (p16), S (s16), S (u16), S (f16), S (bf16)\n+\n+/* _p8 _s8 _u8 _mf8\n+ _p16 _s16 _u16 _f16 _bf16\n+\t_s32 _u32 _f32\n+ _p64 _s64 _u64 _f64. */\n+#define TYPES_all_neon(S, D, T) \\\n+ TYPES_bhsd_neon (S, D, T), \\\n+ TYPES_h_bfloat (S, D, T)\n+\n /* _p8 _p16 _p64. */\n #define TYPES_bhd_poly(S, D, T) \\\n S (p8), S (p16), S (p64)\n@@ -1771,6 +1792,28 @@ void build_all (function_builder &b, const char *signature,\n #define TYPES_bhdq_poly(S, D, T) \\\n S (p8), S (p16), S (p64), S (p128)\n \n+/* _p8 _s8 _u8 _mf8\n+ _p16 _s16 _u16 _f16\n+\t_s32 _u32 _f32\n+ _p64 _s64 _u64 _f64. */\n+#define TYPES_bhsd_neon(S, D, T) \\\n+ TYPES_bhd_poly (S, D, T), S (mf8), \\\n+ TYPES_all_integer (S, D, T), \\\n+ TYPES_all_float (S, D, T)\n+\n+/* _p8 _s8 _u8 _mf8\n+ _p16 _s16 _u16 _bf16\n+\t_s32 _u32 _f32\n+ _p64 _s64 _u64 _f64. */\n+#define TYPES_neon_copy_lane(S, D, T) \\\n+ TYPES_bhd_poly (S, D, T), \\\n+ TYPES_all_integer (S, D, T), \\\n+ S (mf8), S (bf16), S (f32), S (f64)\n+\n+/* _p8 _s8 _u8. */\n+#define TYPES_b_neon(S, D, T) \\\n+ S (p8), S (s8), S (u8)\n+\n /* Describe a tuple of type suffixes in which only the first is used. */\n #define DEF_VECTOR_TYPE(X) \\\n { TYPE_SUFFIX_ ## X, NUM_TYPE_SUFFIXES, NUM_TYPE_SUFFIXES }\n@@ -1904,8 +1947,14 @@ DEF_SVE_TYPES_ARRAY (mop_i16i64_signed);\n DEF_SVE_TYPES_ARRAY (mop_i16i64_unsigned);\n DEF_SVE_TYPES_ARRAY (za);\n \n+DEF_SVE_TYPES_ARRAY (b_float);\n+DEF_SVE_TYPES_ARRAY (all_neon);\n+DEF_SVE_TYPES_ARRAY (b_neon);\n+DEF_SVE_TYPES_ARRAY (h_neon);\n DEF_SVE_TYPES_ARRAY (bhd_poly);\n DEF_SVE_TYPES_ARRAY (bhdq_poly);\n+DEF_SVE_TYPES_ARRAY (bhsd_neon);\n+DEF_SVE_TYPES_ARRAY (neon_copy_lane);\n \n static const group_suffix_index groups_none[] = {\n GROUP_none, NUM_GROUP_SUFFIXES\ndiff --git a/gcc/config/aarch64/aarch64-builtins.cc b/gcc/config/aarch64/aarch64-builtins.cc\nindex e9e237f65aae..3f74203c3c35 100644\n--- a/gcc/config/aarch64/aarch64-builtins.cc\n+++ b/gcc/config/aarch64/aarch64-builtins.cc\n@@ -705,42 +705,6 @@ static aarch64_simd_builtin_datum aarch64_simd_builtin_data[] = {\n VREINTERPRET_BUILTINS \\\n VREINTERPRETQ_BUILTINS\n \n-#define AARCH64_SIMD_VGET_LOW_BUILTINS \\\n- VGET_LOW_BUILTIN(mf8) \\\n- VGET_LOW_BUILTIN(f16) \\\n- VGET_LOW_BUILTIN(f32) \\\n- VGET_LOW_BUILTIN(f64) \\\n- VGET_LOW_BUILTIN(p8) \\\n- VGET_LOW_BUILTIN(p16) \\\n- VGET_LOW_BUILTIN(p64) \\\n- VGET_LOW_BUILTIN(s8) \\\n- VGET_LOW_BUILTIN(s16) \\\n- VGET_LOW_BUILTIN(s32) \\\n- VGET_LOW_BUILTIN(s64) \\\n- VGET_LOW_BUILTIN(u8) \\\n- VGET_LOW_BUILTIN(u16) \\\n- VGET_LOW_BUILTIN(u32) \\\n- VGET_LOW_BUILTIN(u64) \\\n- VGET_LOW_BUILTIN(bf16)\n-\n-#define AARCH64_SIMD_VGET_HIGH_BUILTINS \\\n- VGET_HIGH_BUILTIN(mf8) \\\n- VGET_HIGH_BUILTIN(f16) \\\n- VGET_HIGH_BUILTIN(f32) \\\n- VGET_HIGH_BUILTIN(f64) \\\n- VGET_HIGH_BUILTIN(p8) \\\n- VGET_HIGH_BUILTIN(p16) \\\n- VGET_HIGH_BUILTIN(p64) \\\n- VGET_HIGH_BUILTIN(s8) \\\n- VGET_HIGH_BUILTIN(s16) \\\n- VGET_HIGH_BUILTIN(s32) \\\n- VGET_HIGH_BUILTIN(s64) \\\n- VGET_HIGH_BUILTIN(u8) \\\n- VGET_HIGH_BUILTIN(u16) \\\n- VGET_HIGH_BUILTIN(u32) \\\n- VGET_HIGH_BUILTIN(u64) \\\n- VGET_HIGH_BUILTIN(bf16)\n-\n #include \"aarch64-builtin-pairs.def\"\n \n #define LO_HI_PAIRINGS \\\n@@ -790,12 +754,6 @@ typedef struct\n #define VREINTERPRET_BUILTIN(A, B, L) \\\n AARCH64_SIMD_BUILTIN_VREINTERPRET##L##_##A##_##B,\n \n-#define VGET_LOW_BUILTIN(A) \\\n- AARCH64_SIMD_BUILTIN_VGET_LOW_##A,\n-\n-#define VGET_HIGH_BUILTIN(A) \\\n- AARCH64_SIMD_BUILTIN_VGET_HIGH_##A,\n-\n #undef VAR1\n #define VAR1(T, N, MAP, FLAG, A) \\\n AARCH64_SIMD_BUILTIN_##T##_##N##A,\n@@ -835,8 +793,6 @@ enum aarch64_builtins\n AARCH64_CRC32_BUILTIN_MAX,\n /* SIMD intrinsic builtins. */\n AARCH64_SIMD_VREINTERPRET_BUILTINS\n- AARCH64_SIMD_VGET_LOW_BUILTINS\n- AARCH64_SIMD_VGET_HIGH_BUILTINS\n /* ARMv8.3-A Pointer Authentication Builtins. */\n AARCH64_PAUTH_BUILTIN_AUTIA1716,\n AARCH64_PAUTH_BUILTIN_PACIA1716,\n@@ -947,35 +903,10 @@ static aarch64_fcmla_laneq_builtin_datum aarch64_fcmla_lane_builtin_data[] = {\n && SIMD_INTR_QUAL(A) == SIMD_INTR_QUAL(B) \\\n },\n \n-#undef VGET_LOW_BUILTIN\n-#define VGET_LOW_BUILTIN(A) \\\n- {\"vget_low_\" #A, \\\n- AARCH64_SIMD_BUILTIN_VGET_LOW_##A, \\\n- 2, \\\n- { SIMD_INTR_MODE(A, d), SIMD_INTR_MODE(A, q) }, \\\n- { SIMD_INTR_QUAL(A), SIMD_INTR_QUAL(A) }, \\\n- FLAG_DEFAULT, \\\n- false \\\n- },\n-\n-#undef VGET_HIGH_BUILTIN\n-#define VGET_HIGH_BUILTIN(A) \\\n- {\"vget_high_\" #A, \\\n- AARCH64_SIMD_BUILTIN_VGET_HIGH_##A, \\\n- 2, \\\n- { SIMD_INTR_MODE(A, d), SIMD_INTR_MODE(A, q) }, \\\n- { SIMD_INTR_QUAL(A), SIMD_INTR_QUAL(A) }, \\\n- FLAG_DEFAULT, \\\n- false \\\n- },\n-\n static const aarch64_simd_intrinsic_datum aarch64_simd_intrinsic_data[] = {\n AARCH64_SIMD_VREINTERPRET_BUILTINS\n- AARCH64_SIMD_VGET_LOW_BUILTINS\n- AARCH64_SIMD_VGET_HIGH_BUILTINS\n };\n \n-\n #undef CRC32_BUILTIN\n \n static GTY(()) tree aarch64_builtin_decls[AARCH64_BUILTIN_MAX];\n@@ -2884,8 +2815,6 @@ aarch64_pragma_builtins_checker::check ()\n \n switch (builtin_data.unspec)\n {\n- case UNSPEC_DUP_LANE:\n- case UNSPEC_GET_LANE:\n case UNSPEC_LD2_LANE:\n case UNSPEC_LD3_LANE:\n case UNSPEC_LD4_LANE:\n@@ -2930,11 +2859,6 @@ aarch64_pragma_builtins_checker::check ()\n \treturn require_immediate_range (nargs - 1, 0, high);\n }\n \n- case UNSPEC_VEC_COPY:\n- /* & rather than && so that we report errors against both indices. */\n- return (require_immediate_lane_index (1, 0)\n-\t & require_immediate_lane_index (3, 2));\n-\n default:\n return true;\n }\n@@ -3174,12 +3098,12 @@ aarch64_simd_expand_builtin (int fcode, tree exp, rtx target)\n \t && UINTVAL (totalsize) != 0)\n \t{\n \t rtx lane_idx = expand_normal (CALL_EXPR_ARG (exp, 2));\n- if (CONST_INT_P (lane_idx))\n+\t if (CONST_INT_P (lane_idx))\n \t aarch64_simd_lane_bounds (lane_idx, 0,\n \t\t\t\t UINTVAL (totalsize)\n \t\t\t\t / UINTVAL (elementsize),\n \t\t\t\t exp);\n- else\n+\t else\n \t error_at (EXPR_LOCATION (exp),\n \t\t \"lane index must be a constant immediate\");\n \t}\n@@ -4171,22 +4095,11 @@ aarch64_expand_pragma_builtin (tree exp, rtx target,\n icode = code_for_aarch64_simd_bsl (ops[0].mode);\n break;\n \n- case UNSPEC_COMBINE:\n- icode = code_for_aarch64_combine (ops[1].mode);\n- break;\n-\n case UNSPEC_DUP:\n if (builtin_data.signature == aarch64_builtin_signatures::load)\n \taarch64_dereference_pointer (&ops[1], GET_MODE_INNER (ops[0].mode));\n return expand_vector_broadcast (ops[0].mode, ops[1].value);\n \n- case UNSPEC_DUP_LANE:\n- aarch64_canonicalize_lane (&ops[2], ops[1].mode);\n- if (ops[0].mode == ops[1].mode)\n-\ticode = code_for_aarch64_dup_lane (ops[0].mode);\n- else\n-\ticode = code_for_aarch64_dup_lane (ops[0].mode, ops[0].mode);\n- break;\n \n case UNSPEC_EXT:\n icode = code_for_aarch64_ext (ops[0].mode);\n@@ -4261,11 +4174,6 @@ aarch64_expand_pragma_builtin (tree exp, rtx target,\n \tgcc_unreachable ();\n break;\n \n- case UNSPEC_GET_LANE:\n- aarch64_canonicalize_lane (&ops[2], ops[1].mode);\n- icode = code_for_aarch64_get_lane (ops[1].mode);\n- break;\n-\n case UNSPEC_LD1:\n icode = code_for_aarch64_ld1 (ops[0].mode);\n break;\n@@ -4379,21 +4287,6 @@ aarch64_expand_pragma_builtin (tree exp, rtx target,\n case UNSPEC_UZP:\n return aarch64_expand_permute_pair (ops, UNSPEC_UZP1, UNSPEC_UZP2);\n \n- case UNSPEC_VCREATE:\n- return force_lowpart_subreg (ops[0].mode, ops[1].value, ops[1].mode);\n-\n- case UNSPEC_VEC_COPY:\n- {\n-\taarch64_convert_to_lane_mask (&ops[2], ops[1].mode);\n-\taarch64_canonicalize_lane (&ops[4], ops[3].mode);\n-\tif (ops[1].mode == ops[3].mode)\n-\t icode = code_for_aarch64_simd_vec_copy_lane (ops[1].mode);\n-\telse\n-\t icode = code_for_aarch64_simd_vec_copy_lane (ops[1].mode,\n-\t\t\t\t\t\t ops[1].mode);\n-\tbreak;\n- }\n-\n case UNSPEC_ZIP:\n return aarch64_expand_permute_pair (ops, UNSPEC_ZIP1, UNSPEC_ZIP2);\n \n@@ -4702,14 +4595,6 @@ aarch64_fold_builtin_lane_check (tree arg0, tree arg1, tree arg2)\n #define VREINTERPRET_BUILTIN(A, B, L) \\\n case AARCH64_SIMD_BUILTIN_VREINTERPRET##L##_##A##_##B:\n \n-#undef VGET_LOW_BUILTIN\n-#define VGET_LOW_BUILTIN(A) \\\n- case AARCH64_SIMD_BUILTIN_VGET_LOW_##A:\n-\n-#undef VGET_HIGH_BUILTIN\n-#define VGET_HIGH_BUILTIN(A) \\\n- case AARCH64_SIMD_BUILTIN_VGET_HIGH_##A:\n-\n /* Try to fold a call to the built-in function with subcode FCODE. The\n function is passed the N_ARGS arguments in ARGS and it returns a value\n of type TYPE. Return the new expression on success and NULL_TREE on\n@@ -4728,20 +4613,6 @@ aarch64_general_fold_builtin (unsigned int fcode, tree type,\n \treturn fold_build1 (FLOAT_EXPR, type, args[0]);\n AARCH64_SIMD_VREINTERPRET_BUILTINS\n \treturn fold_build1 (VIEW_CONVERT_EXPR, type, args[0]);\n- AARCH64_SIMD_VGET_LOW_BUILTINS\n-\t{\n-\t auto pos = BYTES_BIG_ENDIAN ? 64 : 0;\n-\n-\t return fold_build3 (BIT_FIELD_REF, type, args[0], bitsize_int (64),\n-\t\t\t bitsize_int (pos));\n-\t}\n- AARCH64_SIMD_VGET_HIGH_BUILTINS\n-\t{\n-\t auto pos = BYTES_BIG_ENDIAN ? 0 : 64;\n-\n-\t return fold_build3 (BIT_FIELD_REF, type, args[0], bitsize_int (64),\n-\t\t\t bitsize_int (pos));\n-\t}\n case AARCH64_SIMD_BUILTIN_LANE_CHECK:\n \tgcc_assert (n_args == 3);\n \tif (aarch64_fold_builtin_lane_check (args[0], args[1], args[2]))\n@@ -4933,27 +4804,6 @@ aarch64_set_lane (tree lhs, tree elt, tree vec, tree lane)\n return gimple_build_assign (lhs, BIT_INSERT_EXPR, vec, elt, bit);\n }\n \n-/* Fold a call to vcombine. */\n-static gimple *\n-aarch64_fold_combine (gcall *stmt)\n-{\n- tree first_part, second_part;\n- if (BYTES_BIG_ENDIAN)\n- {\n- second_part = gimple_call_arg (stmt, 0);\n- first_part = gimple_call_arg (stmt, 1);\n- }\n- else\n- {\n- first_part = gimple_call_arg (stmt, 0);\n- second_part = gimple_call_arg (stmt, 1);\n- }\n- tree ret_type = gimple_call_return_type (stmt);\n- tree ctor = build_constructor_va (ret_type, 2, NULL_TREE, first_part,\n-\t\t\t\t NULL_TREE, second_part);\n- return gimple_build_assign (gimple_call_lhs (stmt), ctor);\n-}\n-\n /* Fold a call to vaeseq_u8 and vaesdq_u8.\n That is `vaeseq_u8 (x ^ y, 0)` gets folded\n into `vaeseq_u8 (x, y)`.*/\n@@ -5097,18 +4947,12 @@ aarch64_gimple_fold_pragma_builtin\n \n switch (builtin_data.unspec)\n {\n- case UNSPEC_COMBINE:\n- return aarch64_fold_combine (stmt);\n-\n case UNSPEC_DUP:\n- case UNSPEC_DUP_LANE:\n {\n \ttree arg = gimple_call_arg (stmt, 0);\n \ttree type = types[0].type ();\n \tif (builtin_data.signature == aarch64_builtin_signatures::load)\n \t arg = aarch64_dereference (arg, TREE_TYPE (type));\n-\telse if (builtin_data.unspec == UNSPEC_DUP_LANE)\n-\t arg = aarch64_get_lane (arg, gimple_call_arg (stmt, 1));\n \targ = aarch64_force_gimple_val (gsi, arg);\n \n \ttree dup = build_vector_from_val (type, arg);\n@@ -5121,13 +4965,6 @@ aarch64_gimple_fold_pragma_builtin\n \treturn aarch64_fold_permute (stmt, 2, aarch64_ext_index, index);\n }\n \n- case UNSPEC_GET_LANE:\n- {\n-\ttree val = aarch64_get_lane (gimple_call_arg (stmt, 0),\n-\t\t\t\t gimple_call_arg (stmt, 1));\n-\treturn gimple_build_assign (gimple_call_lhs (stmt), val);\n- }\n-\n case UNSPEC_LD1:\n return aarch64_fold_load (stmt, types[0].type ());\n \n@@ -5187,22 +5024,6 @@ aarch64_gimple_fold_pragma_builtin\n case UNSPEC_UZP2:\n return aarch64_fold_permute (stmt, 2, aarch64_uzp_index, 1);\n \n- case UNSPEC_VCREATE:\n- return gimple_build_assign (gimple_call_lhs (stmt),\n-\t\t\t\t fold_build1 (VIEW_CONVERT_EXPR,\n-\t\t\t\t\t types[0].type (),\n-\t\t\t\t\t gimple_call_arg (stmt, 0)));\n-\n- case UNSPEC_VEC_COPY:\n- {\n-\ttree elt = aarch64_get_lane (gimple_call_arg (stmt, 2),\n-\t\t\t\t gimple_call_arg (stmt, 3));\n-\telt = aarch64_force_gimple_val (gsi, elt);\n-\treturn aarch64_set_lane (gimple_call_lhs (stmt), elt,\n-\t\t\t\t gimple_call_arg (stmt, 0),\n-\t\t\t\t gimple_call_arg (stmt, 1));\n- }\n-\n case UNSPEC_ZIP1:\n return aarch64_fold_permute (stmt, 2, aarch64_zip_index, 0);\n \n@@ -5412,12 +5233,6 @@ aarch64_general_gimple_fold_builtin (unsigned int fcode, gcall *stmt,\n \tgimple_call_set_lhs (new_stmt, gimple_call_lhs (stmt));\n \tbreak;\n \n- BUILTIN_VDC (BINOP, combine, 0, QUIET)\n- BUILTIN_VD_I (BINOPU, combine, 0, DEFAULT)\n- BUILTIN_VDC_P (BINOPP, combine, 0, DEFAULT)\n- new_stmt = aarch64_fold_combine (stmt);\n- break;\n-\n /*lower store and load neon builtins to gimple. */\n BUILTIN_VALL_F16 (LOAD1, ld1, 0, LOAD)\n BUILTIN_VDQ_I (LOAD1_U, ld1, 0, LOAD)\ndiff --git a/gcc/config/aarch64/aarch64-neon-builtins-base.cc b/gcc/config/aarch64/aarch64-neon-builtins-base.cc\nindex 4c3c33c56629..6ae24be6ac81 100644\n--- a/gcc/config/aarch64/aarch64-neon-builtins-base.cc\n+++ b/gcc/config/aarch64/aarch64-neon-builtins-base.cc\n@@ -47,6 +47,38 @@\n \n using namespace aarch64_acle;\n \n+/* Build a `VEC[INDEX]` expression. */\n+tree\n+build_lane_get (tree vec, tree index)\n+{\n+ auto vec_type = TREE_TYPE (vec);\n+ auto elem_type = TREE_TYPE (vec_type);\n+ auto elem_size = TYPE_SIZE (elem_type);\n+ auto offset = fold_build2 (MULT_EXPR, bitsizetype, elem_size, index);\n+ return fold_build3 (BIT_FIELD_REF, elem_type, vec, elem_size, offset);\n+}\n+\n+/* Build a `VEC[INDEX] = ELEM;` statement.\n+ Returns an expression representing the updated VEC. */\n+tree\n+build_lane_set (tree vec, tree index, tree elem)\n+{\n+ auto vec_type = TREE_TYPE (vec);\n+ auto elem_type = TREE_TYPE (vec_type);\n+ auto elem_size = TYPE_SIZE (elem_type);\n+ auto offset = fold_build2 (MULT_EXPR, bitsizetype, elem_size, index);\n+ return fold_build3 (BIT_INSERT_EXPR, vec_type, vec, elem, offset);\n+}\n+\n+/* Build an expression for a vector with all lanes set to `ELEM`. */\n+tree\n+build_vec_dup (tree type, tree elem)\n+{\n+ return known_eq (TYPE_VECTOR_SUBPARTS (type), 1U)\n+\t ? fold_build1 (VIEW_CONVERT_EXPR, type, elem)\n+\t : fold_build1 (VEC_DUPLICATE_EXPR, type, elem);\n+}\n+\n /* Base class for all function expanders.\n At least one of `expand` or `fold` must be overriden by derived classes. */\n class gimple_function_base : public function_base\n@@ -107,6 +139,146 @@ public:\n }\n };\n \n+struct gimple_create : public gimple_function_base\n+{\n+ gimple *fold (gimple_folder &f) const override\n+ {\n+ auto arg = gimple_call_arg (f.call, 0);\n+ return gimple_build_assign (f.lhs, fold_build1 (VIEW_CONVERT_EXPR,\n+\t\t\t\t\t\t TREE_TYPE (f.lhs), arg));\n+ }\n+};\n+\n+struct gimple_combine : public gimple_function_base\n+{\n+ gimple *fold (gimple_folder &f) const override\n+ {\n+ auto arg1 = gimple_call_arg (f.call, 0);\n+ auto arg2 = gimple_call_arg (f.call, 1);\n+ auto arg_type = TREE_TYPE (arg1);\n+ auto elem_type = TREE_TYPE (arg_type);\n+ auto ret_type = TREE_TYPE (f.lhs);\n+\n+ if (known_eq (TYPE_VECTOR_SUBPARTS (arg_type), 1U))\n+ {\n+\targ1 = f.force_val (fold_build1 (VIEW_CONVERT_EXPR, elem_type, arg1));\n+\targ2 = f.force_val (fold_build1 (VIEW_CONVERT_EXPR, elem_type, arg2));\n+ }\n+\n+ return gimple_build_assign (f.lhs,\n+\t\t\t\tbuild_constructor_va (ret_type, 2, NULL_TREE,\n+\t\t\t\t\t\t arg1, NULL_TREE, arg2));\n+ }\n+};\n+\n+struct gimple_get_lane : public gimple_function_base\n+{\n+ gimple *fold (gimple_folder &f) const override\n+ {\n+ auto src = gimple_call_arg (f.call, 0);\n+ auto lane = gimple_call_arg (f.call, 1);\n+ return gimple_build_assign (f.lhs, build_lane_get (src, lane));\n+ }\n+};\n+\n+template <bool high_half_p>\n+struct gimple_get_half : public gimple_function_base\n+{\n+ gimple *fold (gimple_folder &f) const override\n+ {\n+ auto src = gimple_call_arg (f.call, 0);\n+ auto half\n+ = fold_build3 (BIT_FIELD_REF, TREE_TYPE (f.lhs), src, bitsize_int (64),\n+\t\t bitsize_int (high_half_p ? 64 : 0));\n+ return gimple_build_assign (f.lhs, half);\n+ }\n+};\n+\n+struct gimple_set_lane : public gimple_function_base\n+{\n+ gimple *fold (gimple_folder &f) const override\n+ {\n+ auto elem = gimple_call_arg (f.call, 0);\n+ auto src = gimple_call_arg (f.call, 1);\n+ auto lane = gimple_call_arg (f.call, 2);\n+ return gimple_build_assign (f.lhs, build_lane_set (src, lane, elem));\n+ }\n+};\n+\n+struct gimple_copy_lane : public gimple_function_base\n+{\n+ gimple *fold (gimple_folder &f) const override\n+ {\n+ auto vec1 = gimple_call_arg (f.call, 0);\n+ auto lane1 = gimple_call_arg (f.call, 1);\n+ auto vec2 = gimple_call_arg (f.call, 2);\n+ auto lane2 = gimple_call_arg (f.call, 3);\n+\n+ // tmp1 = vec2[lane2]\n+ auto tmp1 = f.force_val (build_lane_get (vec2, lane2));\n+\n+ // vec1[lane1] = tmp1\n+ // lhs = vec1\n+ return gimple_build_assign (f.lhs, build_lane_set (vec1, lane1, tmp1));\n+ }\n+};\n+\n+struct gimple_dup : public gimple_function_base\n+{\n+ gimple *fold (gimple_folder &f) const override\n+ {\n+ auto elem = gimple_call_arg (f.call, 0);\n+ auto ret_type = TREE_TYPE (f.lhs);\n+ return gimple_build_assign (f.lhs, build_vec_dup (ret_type, elem));\n+ }\n+};\n+\n+struct gimple_dup_lane : public gimple_function_base\n+{\n+ gimple *fold (gimple_folder &f) const override\n+ {\n+ auto vec = gimple_call_arg (f.call, 0);\n+ auto lane = gimple_call_arg (f.call, 1);\n+ auto type = TREE_TYPE (f.lhs);\n+\n+ // tmp1 = vec[lane]\n+ auto tmp1 = f.force_val (build_lane_get (vec, lane));\n+\n+ // lhs = VEC_DUP (vec[lane])\n+ return gimple_build_assign (f.lhs, build_vec_dup (type, tmp1));\n+ }\n+};\n+\n+// Lane get/set\n+NEON_FUNCTION (vcreate, gimple_create,)\n+NEON_FUNCTION (vcombine, gimple_combine,)\n+NEON_FUNCTION (vget_lane, gimple_get_lane,)\n+NEON_FUNCTION (vgetq_lane, gimple_get_lane,)\n+NEON_FUNCTION (vget_low, gimple_get_half<false>,)\n+NEON_FUNCTION (vget_high, gimple_get_half<true>,)\n+NEON_FUNCTION (vset_lane, gimple_set_lane,)\n+NEON_FUNCTION (vsetq_lane, gimple_set_lane,)\n+NEON_FUNCTION (vcopy_lane, gimple_copy_lane,)\n+NEON_FUNCTION (vcopy_laneq, gimple_copy_lane,)\n+NEON_FUNCTION (vcopyq_laneq, gimple_copy_lane,)\n+NEON_FUNCTION (vcopyq_lane, gimple_copy_lane,)\n+NEON_FUNCTION (vdup_n, gimple_dup,)\n+NEON_FUNCTION (vdupq_n, gimple_dup,)\n+NEON_FUNCTION (vmov_n, gimple_dup,)\n+NEON_FUNCTION (vmovq_n, gimple_dup,)\n+NEON_FUNCTION (vdup_lane, gimple_dup_lane,)\n+NEON_FUNCTION (vdupq_lane, gimple_dup_lane,)\n+NEON_FUNCTION (vdup_laneq, gimple_dup_lane,)\n+NEON_FUNCTION (vdupq_laneq, gimple_dup_lane,)\n+NEON_FUNCTION (vdupb_lane, gimple_get_lane,)\n+NEON_FUNCTION (vdupb_laneq, gimple_get_lane,)\n+NEON_FUNCTION (vduph_lane, gimple_get_lane,)\n+NEON_FUNCTION (vduph_laneq, gimple_get_lane,)\n+NEON_FUNCTION (vdups_lane, gimple_get_lane,)\n+NEON_FUNCTION (vdups_laneq, gimple_get_lane,)\n+NEON_FUNCTION (vdupd_lane, gimple_get_lane,)\n+NEON_FUNCTION (vdupd_laneq, gimple_get_lane,)\n+\n // Lanewise arithmetic\n NEON_FUNCTION (vaddd, gimple_expr, (PLUS_EXPR))\n NEON_FUNCTION (vadd, gimple_expr, (PLUS_EXPR, PLUS_EXPR, BIT_XOR_EXPR))\ndiff --git a/gcc/config/aarch64/aarch64-neon-builtins-base.def b/gcc/config/aarch64/aarch64-neon-builtins-base.def\nindex c8077d96a7dd..5f61d8f6634f 100644\n--- a/gcc/config/aarch64/aarch64-neon-builtins-base.def\n+++ b/gcc/config/aarch64/aarch64-neon-builtins-base.def\n@@ -17,6 +17,44 @@\n along with GCC; see the file COPYING3. If not see\n <http://www.gnu.org/licenses/>. */\n \n+// Lane manipulation\n+#define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)\n+DEF_NEON_FUNCTION (vcreate, all_neon, (\"D0,su64\"))\n+DEF_NEON_FUNCTION (vcombine, all_neon, (\"Q0,D0,D0\"))\n+DEF_NEON_FUNCTION (vget_lane, all_neon, (\"s0,D0,ss32\", lane<1>))\n+DEF_NEON_FUNCTION (vgetq_lane, all_neon, (\"s0,Q0,ss32\", lane<1>))\n+DEF_NEON_FUNCTION (vget_high, all_neon, (\"D0,Q0\"))\n+DEF_NEON_FUNCTION (vget_low, all_neon, (\"D0,Q0\"))\n+DEF_NEON_FUNCTION (vset_lane, all_neon, (\"D0,s0,D0,ss32\", lane<2>))\n+DEF_NEON_FUNCTION (vsetq_lane, all_neon, (\"Q0,s0,Q0,ss32\", lane<2>))\n+DEF_NEON_FUNCTION (vdup_lane, all_neon, (\"D0,D0,ss32\", lane<1>))\n+DEF_NEON_FUNCTION (vdupq_lane, all_neon, (\"Q0,D0,ss32\", lane<1>))\n+DEF_NEON_FUNCTION (vdup_laneq, all_neon, (\"D0,Q0,ss32\", lane<1>))\n+DEF_NEON_FUNCTION (vdupq_laneq, all_neon, (\"Q0,Q0,ss32\", lane<1>))\n+DEF_NEON_FUNCTION (vdupb_lane, b_neon, (\"s0,D0,ss32\", lane<1>))\n+DEF_NEON_FUNCTION (vdupb_laneq, b_neon, (\"s0,Q0,ss32\", lane<1>))\n+DEF_NEON_FUNCTION (vdupb_lane, b_float, (\"s0,D0,ss32\", lane<1>))\n+DEF_NEON_FUNCTION (vdupb_laneq, b_float, (\"s0,Q0,ss32\", lane<1>))\n+DEF_NEON_FUNCTION (vduph_lane, h_neon, (\"s0,D0,ss32\", lane<1>))\n+DEF_NEON_FUNCTION (vduph_laneq, h_neon, (\"s0,Q0,ss32\", lane<1>))\n+DEF_NEON_FUNCTION (vdups_lane, s_data, (\"s0,D0,ss32\", lane<1>))\n+DEF_NEON_FUNCTION (vdups_laneq, s_data, (\"s0,Q0,ss32\", lane<1>))\n+DEF_NEON_FUNCTION (vdupd_lane, d_data, (\"s0,D0,ss32\", lane<1>))\n+DEF_NEON_FUNCTION (vdupd_laneq, d_data, (\"s0,Q0,ss32\", lane<1>))\n+DEF_NEON_FUNCTION (vdup_n, all_neon, (\"D0,s0\"))\n+DEF_NEON_FUNCTION (vdupq_n, all_neon, (\"Q0,s0\"))\n+DEF_NEON_FUNCTION (vmov_n, bhsd_neon, (\"D0,s0\"))\n+DEF_NEON_FUNCTION (vmovq_n, bhsd_neon, (\"Q0,s0\"))\n+DEF_NEON_FUNCTION (vcopy_lane, neon_copy_lane,\n+\t\t (\"D0,D0,ss32,D0,ss32\", lane<1>, lane<3>))\n+DEF_NEON_FUNCTION (vcopy_laneq, neon_copy_lane,\n+\t\t (\"D0,D0,ss32,Q0,ss32\", lane<1>, lane<3>))\n+DEF_NEON_FUNCTION (vcopyq_lane, neon_copy_lane,\n+\t\t (\"Q0,Q0,ss32,D0,ss32\", lane<1>, lane<3>))\n+DEF_NEON_FUNCTION (vcopyq_laneq, neon_copy_lane,\n+\t\t (\"Q0,Q0,ss32,Q0,ss32\", lane<1>, lane<3>))\n+#undef REQUIRED_EXTENSIONS\n+\n // Lanewise arithmetic\n #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)\n DEF_NEON_FUNCTION (vaddd, d_integer,\t (\"s0,s0,s0\"))\ndiff --git a/gcc/config/aarch64/aarch64-neon-builtins-shapes.cc b/gcc/config/aarch64/aarch64-neon-builtins-shapes.cc\nindex 7946a7675eb5..e88307eedf63 100644\n--- a/gcc/config/aarch64/aarch64-neon-builtins-shapes.cc\n+++ b/gcc/config/aarch64/aarch64-neon-builtins-shapes.cc\n@@ -37,16 +37,68 @@\n \n using namespace aarch64_acle;\n \n+/* Require that the parameter at PARAM_INDEX is in the range MIN to MAX\n+ (inclusive). */\n+template <unsigned int PARAM_INDEX, int MIN, int MAX>\n+bool\n+range (function_checker &c)\n+{\n+ return c.require_immediate_range (PARAM_INDEX, MIN, MAX);\n+}\n+\n+/* Require that the parameter at PARAM_INDEX is a valid lane index for the\n+ vector at PARAM_INDEX - 1. */\n+template <unsigned int PARAM_INDEX>\n+bool\n+lane (function_checker &c)\n+{\n+ auto vec_param_index = PARAM_INDEX - 1;\n+ auto fn_type = TREE_TYPE (c.fndecl);\n+ auto args = TYPE_ARG_TYPES (fn_type);\n+\n+ for (auto i = 0U; i < vec_param_index; i++)\n+ args = TREE_CHAIN (args);\n+ auto arg_type = TREE_VALUE (args);\n+\n+ unsigned element_count;\n+ if (VECTOR_TYPE_P (arg_type))\n+ element_count = TYPE_VECTOR_SUBPARTS (arg_type).to_constant ();\n+ else\n+ {\n+ auto field = tuple_type_field (arg_type);\n+ auto array_type = TREE_TYPE (field);\n+ auto vec_type = TREE_TYPE (array_type);\n+ element_count = TYPE_VECTOR_SUBPARTS (vec_type).to_constant ();\n+ }\n+ return c.require_immediate_range (PARAM_INDEX, 0, element_count - 1);\n+}\n+\n+\n+/* A checker that always returns true. */\n+bool\n+trivial (function_checker &)\n+{\n+ return true;\n+}\n+\n+using check_fn_t = bool (*) (function_checker &);\n+\n /* All NEON functions are non-overloaded, so we don't need bespoke\n function shapes. Instead, we can just use a single shape for all NEON\n- functions, parameterised by a signature. */\n+ functions, parameterised by a signature and optional validity checkers. */\n struct neon_shape : public function_shape\n {\n- constexpr neon_shape (const char *signature)\n- : m_signature (signature)\n+ constexpr neon_shape (const char *signature,\n+\t\t\tcheck_fn_t check_fn1 = trivial,\n+\t\t\tcheck_fn_t check_fn2 = trivial)\n+ : m_signature (signature),\n+ m_check_fn1 (check_fn1),\n+ m_check_fn2 (check_fn2)\n {}\n \n const char *m_signature;\n+ check_fn_t m_check_fn1;\n+ check_fn_t m_check_fn2;\n \n void build (function_builder &b,\n \t const function_group_info &group) const override\n@@ -54,7 +106,10 @@ struct neon_shape : public function_shape\n aarch64_acle::build_all (b, this->m_signature, group, MODE_none);\n }\n \n- bool check (function_checker &) const override { return true; }\n+ bool check (function_checker &c) const override\n+ {\n+ return this->m_check_fn1 (c) && this->m_check_fn2 (c);\n+ }\n \n bool explicit_type_suffix_p (unsigned int) const override { return true; }\n tree resolve (function_resolver &) const override { gcc_unreachable (); }\ndiff --git a/gcc/config/aarch64/aarch64-simd-builtins.def b/gcc/config/aarch64/aarch64-simd-builtins.def\nindex 8677df3f488f..b9600bdca30c 100644\n--- a/gcc/config/aarch64/aarch64-simd-builtins.def\n+++ b/gcc/config/aarch64/aarch64-simd-builtins.def\n@@ -50,9 +50,6 @@\n BUILTIN_V12DI (STORESTRUCT_LANE_U, vec_stl1_lane, 0, ALL)\n BUILTIN_V12DI (STORESTRUCT_LANE_P, vec_stl1_lane, 0, ALL)\n \n- BUILTIN_VDC (BINOP, combine, 0, QUIET)\n- BUILTIN_VD_I (BINOPU, combine, 0, DEFAULT)\n- BUILTIN_VDC_P (BINOPP, combine, 0, DEFAULT)\n BUILTIN_VB (BINOPP, pmul, 0, DEFAULT)\n VAR1 (BINOPP, pmull, 0, DEFAULT, v8qi)\n VAR1 (BINOPP, pmull_hi, 0, DEFAULT, v16qi)\ndiff --git a/gcc/config/aarch64/aarch64-simd-pragma-builtins.def b/gcc/config/aarch64/aarch64-simd-pragma-builtins.def\nindex 41bafb2a96ef..e9e7e163def3 100644\n--- a/gcc/config/aarch64/aarch64-simd-pragma-builtins.def\n+++ b/gcc/config/aarch64/aarch64-simd-pragma-builtins.def\n@@ -202,45 +202,6 @@ ENTRY_TERNARY (vbsl_mf8, mf8, u8, mf8, mf8, UNSPEC_BSL, QUIET)\n ENTRY_TERNARY (vbslq_mf8, mf8q, u8q, mf8q, mf8q, UNSPEC_BSL, QUIET)\n #undef REQUIRED_EXTENSIONS\n \n-// combine\n-#define REQUIRED_EXTENSIONS nonstreaming_only (0)\n-ENTRY_BINARY (vcombine_mf8, mf8q, mf8, mf8, UNSPEC_COMBINE, QUIET)\n-#undef REQUIRED_EXTENSIONS\n-\n-// copy_lane\n-#define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)\n-ENTRY_BINARY_TWO_LANES (vcopy_lane_mf8, mf8, mf8, mf8,\n-\t\t\tUNSPEC_VEC_COPY, QUIET)\n-ENTRY_BINARY_TWO_LANES (vcopyq_lane_mf8, mf8q, mf8q, mf8,\n-\t\t\tUNSPEC_VEC_COPY, QUIET)\n-ENTRY_BINARY_TWO_LANES (vcopy_laneq_mf8, mf8, mf8, mf8q,\n-\t\t\tUNSPEC_VEC_COPY, QUIET)\n-ENTRY_BINARY_TWO_LANES (vcopyq_laneq_mf8, mf8q, mf8q, mf8q,\n-\t\t\tUNSPEC_VEC_COPY, QUIET)\n-#undef REQUIRED_EXTENSIONS\n-\n-// create\n-#define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)\n-ENTRY_UNARY (vcreate_mf8, mf8, u64_scalar, UNSPEC_VCREATE, QUIET)\n-#undef REQUIRED_EXTENSIONS\n-\n-// dup\n-#define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)\n-ENTRY_UNARY (vdup_n_mf8, mf8, mf8_scalar, UNSPEC_DUP, QUIET)\n-ENTRY_UNARY (vdupq_n_mf8, mf8q, mf8_scalar, UNSPEC_DUP, QUIET)\n-\n-ENTRY_UNARY_LANE (vdup_lane_mf8, mf8, mf8, UNSPEC_DUP_LANE, QUIET)\n-ENTRY_UNARY_LANE (vdupq_lane_mf8, mf8q, mf8, UNSPEC_DUP_LANE, QUIET)\n-ENTRY_UNARY_LANE (vdup_laneq_mf8, mf8, mf8q, UNSPEC_DUP_LANE, QUIET)\n-ENTRY_UNARY_LANE (vdupq_laneq_mf8, mf8q, mf8q, UNSPEC_DUP_LANE, QUIET)\n-#undef REQUIRED_EXTENSIONS\n-\n-// dupb_lane\n-#define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)\n-ENTRY_UNARY_LANE (vdupb_lane_mf8, mf8_scalar, mf8, UNSPEC_GET_LANE, QUIET)\n-ENTRY_UNARY_LANE (vdupb_laneq_mf8, mf8_scalar, mf8q, UNSPEC_GET_LANE, QUIET)\n-#undef REQUIRED_EXTENSIONS\n-\n // ext\n #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)\n ENTRY_BINARY_LANE (vext_mf8, mf8, mf8, mf8, UNSPEC_EXT, QUIET)\n@@ -306,12 +267,6 @@ ENTRY_TERNARY (vmmlaq_f16_mf8, f16q, f16q, mf8q, mf8q, UNSPEC_FMMLA, FP8)\n ENTRY_TERNARY (vmmlaq_f32_mf8, f32q, f32q, mf8q, mf8q, UNSPEC_FMMLA, FP8)\n #undef REQUIRED_EXTENSIONS\n \n-// mov\n-#define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)\n-ENTRY_UNARY (vmov_n_mf8, mf8, mf8_scalar, UNSPEC_DUP, QUIET)\n-ENTRY_UNARY (vmovq_n_mf8, mf8q, mf8_scalar, UNSPEC_DUP, QUIET)\n-#undef REQUIRED_EXTENSIONS\n-\n // rev\n #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)\n ENTRY_UNARY (vrev64_mf8, mf8, mf8, UNSPEC_REV64, QUIET)\n@@ -324,12 +279,6 @@ ENTRY_UNARY (vrev16_mf8, mf8, mf8, UNSPEC_REV16, QUIET)\n ENTRY_UNARY (vrev16q_mf8, mf8q, mf8q, UNSPEC_REV16, QUIET)\n #undef REQUIRED_EXTENSIONS\n \n-// set_lane\n-#define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)\n-ENTRY_BINARY_LANE (vset_lane_mf8, mf8, mf8_scalar, mf8, UNSPEC_SET_LANE, QUIET)\n-ENTRY_BINARY_LANE (vsetq_lane_mf8, mf8q, mf8_scalar, mf8q, UNSPEC_SET_LANE, QUIET)\n-#undef REQUIRED_EXTENSIONS\n-\n // st1\n #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)\n ENTRY_STORE (vst1_mf8, mf8_scalar_ptr, mf8, UNSPEC_ST1)\ndiff --git a/gcc/config/aarch64/aarch64-sve-builtins.cc b/gcc/config/aarch64/aarch64-sve-builtins.cc\nindex 6f5244ae81d2..eca84c3585a9 100644\n--- a/gcc/config/aarch64/aarch64-sve-builtins.cc\n+++ b/gcc/config/aarch64/aarch64-sve-builtins.cc\n@@ -2526,18 +2526,21 @@ function_checker::require_immediate (unsigned int argno,\n gcc_assert (argno < m_nargs);\n tree arg = m_args[argno];\n \n- /* The type and range are unsigned, so read the argument as an\n- unsigned rather than signed HWI. */\n- if (!tree_fits_uhwi_p (arg))\n+ if (tree_fits_shwi_p (arg))\n+ {\n+ value_out = tree_to_shwi (arg);\n+ return true;\n+ }\n+ else if (tree_fits_uhwi_p (arg))\n+ {\n+ value_out = tree_to_uhwi (arg);\n+ return true;\n+ }\n+ else\n {\n report_non_ice (location, fndecl, argno);\n return false;\n }\n-\n- /* ...but treat VALUE_OUT as signed for error reporting, since printing\n- -1 is more user-friendly than the maximum uint64_t value. */\n- value_out = tree_to_uhwi (arg);\n- return true;\n }\n \n /* Check that argument REL_ARGNO is an integer constant expression that\n@@ -3075,6 +3078,43 @@ gimple_folder::fold ()\n return base->fold (*this);\n }\n \n+/* Force EXPR to be a GIMPLE value, putting it into a new variable if\n+ necessary. */\n+tree\n+gimple_folder::force_val (tree expr)\n+{\n+ if (is_gimple_val (expr))\n+ return expr;\n+\n+ auto type = TREE_TYPE (expr);\n+ auto var = create_tmp_var (type);\n+ auto stmt = gimple_build_assign (var, expr);\n+ gsi_insert_before (this->gsi, stmt, GSI_SAME_STMT);\n+ return var;\n+}\n+\n+/* Insert a `lhs = rhs` statement before the current statement.\n+ Returns the new statement. */\n+gassign *\n+gimple_folder::assign (tree lhs, tree rhs)\n+{\n+ auto stmt = gimple_build_assign (lhs, rhs);\n+ gsi_insert_before (this->gsi, stmt, GSI_SAME_STMT);\n+ return stmt;\n+}\n+\n+/* Insert a `lhs = code<rhs1, rhs2, rhs3>` statement before the current\n+ statement.\n+ Returns the new statement. */\n+gassign *\n+gimple_folder::assign (tree lhs, tree_code code, tree rhs1, tree rhs2,\n+\t\t tree rhs3)\n+{\n+ auto stmt = gimple_build_assign (lhs, code, rhs1, rhs2, rhs3);\n+ gsi_insert_before (this->gsi, stmt, GSI_SAME_STMT);\n+ return stmt;\n+}\n+\n function_expander::function_expander (const function_instance &instance,\n \t\t\t\t tree fndecl, tree call_expr_in,\n \t\t\t\t rtx possible_target_in)\ndiff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md\nindex 0ef01e889a6d..bbf8ec264841 100644\n--- a/gcc/config/aarch64/aarch64.md\n+++ b/gcc/config/aarch64/aarch64.md\n@@ -230,7 +230,6 @@\n UNSPEC_BSL\n UNSPEC_CALLEE_ABI\n UNSPEC_CASESI\n- UNSPEC_COMBINE\n UNSPEC_CPYMEM\n UNSPEC_CRC32B\n UNSPEC_CRC32CB\n@@ -241,7 +240,6 @@\n UNSPEC_CRC32W\n UNSPEC_CRC32X\n UNSPEC_DUP\n- UNSPEC_DUP_LANE\n UNSPEC_FCVTZS\n UNSPEC_FCVTZU\n UNSPEC_FJCVTZS\n@@ -260,7 +258,6 @@\n UNSPEC_FRINTP\n UNSPEC_FRINTX\n UNSPEC_FRINTZ\n- UNSPEC_GET_LANE\n UNSPEC_GOTSMALLPIC\n UNSPEC_GOTSMALLPIC28K\n UNSPEC_GOTSMALLTLS\n@@ -358,8 +355,6 @@\n UNSPEC_UNPACKSLO\n UNSPEC_UNPACKULO\n UNSPEC_PACK\n- UNSPEC_VCREATE\n- UNSPEC_VEC_COPY\n UNSPEC_WHILEGE\n UNSPEC_WHILEGT\n UNSPEC_WHILEHI\ndiff --git a/gcc/config/aarch64/arm_neon.h b/gcc/config/aarch64/arm_neon.h\nindex b5acb0c9321e..2af9c54f1d8b 100644\n--- a/gcc/config/aarch64/arm_neon.h\n+++ b/gcc/config/aarch64/arm_neon.h\n@@ -49,28 +49,6 @@\n __aarch64_vdup_lane_any (f32, , __a, __b)\n #define __aarch64_vdup_lane_f64(__a, __b) \\\n __aarch64_vdup_lane_any (f64, , __a, __b)\n-#define __aarch64_vdup_lane_p8(__a, __b) \\\n- __aarch64_vdup_lane_any (p8, , __a, __b)\n-#define __aarch64_vdup_lane_p16(__a, __b) \\\n- __aarch64_vdup_lane_any (p16, , __a, __b)\n-#define __aarch64_vdup_lane_p64(__a, __b) \\\n- __aarch64_vdup_lane_any (p64, , __a, __b)\n-#define __aarch64_vdup_lane_s8(__a, __b) \\\n- __aarch64_vdup_lane_any (s8, , __a, __b)\n-#define __aarch64_vdup_lane_s16(__a, __b) \\\n- __aarch64_vdup_lane_any (s16, , __a, __b)\n-#define __aarch64_vdup_lane_s32(__a, __b) \\\n- __aarch64_vdup_lane_any (s32, , __a, __b)\n-#define __aarch64_vdup_lane_s64(__a, __b) \\\n- __aarch64_vdup_lane_any (s64, , __a, __b)\n-#define __aarch64_vdup_lane_u8(__a, __b) \\\n- __aarch64_vdup_lane_any (u8, , __a, __b)\n-#define __aarch64_vdup_lane_u16(__a, __b) \\\n- __aarch64_vdup_lane_any (u16, , __a, __b)\n-#define __aarch64_vdup_lane_u32(__a, __b) \\\n- __aarch64_vdup_lane_any (u32, , __a, __b)\n-#define __aarch64_vdup_lane_u64(__a, __b) \\\n- __aarch64_vdup_lane_any (u64, , __a, __b)\n \n /* __aarch64_vdup_laneq internal macros. */\n #define __aarch64_vdup_laneq_f16(__a, __b) \\\n@@ -79,28 +57,6 @@\n __aarch64_vdup_lane_any (f32, , __a, __b)\n #define __aarch64_vdup_laneq_f64(__a, __b) \\\n __aarch64_vdup_lane_any (f64, , __a, __b)\n-#define __aarch64_vdup_laneq_p8(__a, __b) \\\n- __aarch64_vdup_lane_any (p8, , __a, __b)\n-#define __aarch64_vdup_laneq_p16(__a, __b) \\\n- __aarch64_vdup_lane_any (p16, , __a, __b)\n-#define __aarch64_vdup_laneq_p64(__a, __b) \\\n- __aarch64_vdup_lane_any (p64, , __a, __b)\n-#define __aarch64_vdup_laneq_s8(__a, __b) \\\n- __aarch64_vdup_lane_any (s8, , __a, __b)\n-#define __aarch64_vdup_laneq_s16(__a, __b) \\\n- __aarch64_vdup_lane_any (s16, , __a, __b)\n-#define __aarch64_vdup_laneq_s32(__a, __b) \\\n- __aarch64_vdup_lane_any (s32, , __a, __b)\n-#define __aarch64_vdup_laneq_s64(__a, __b) \\\n- __aarch64_vdup_lane_any (s64, , __a, __b)\n-#define __aarch64_vdup_laneq_u8(__a, __b) \\\n- __aarch64_vdup_lane_any (u8, , __a, __b)\n-#define __aarch64_vdup_laneq_u16(__a, __b) \\\n- __aarch64_vdup_lane_any (u16, , __a, __b)\n-#define __aarch64_vdup_laneq_u32(__a, __b) \\\n- __aarch64_vdup_lane_any (u32, , __a, __b)\n-#define __aarch64_vdup_laneq_u64(__a, __b) \\\n- __aarch64_vdup_lane_any (u64, , __a, __b)\n \n /* __aarch64_vdupq_lane internal macros. */\n #define __aarch64_vdupq_lane_f16(__a, __b) \\\n@@ -109,28 +65,6 @@\n __aarch64_vdup_lane_any (f32, q, __a, __b)\n #define __aarch64_vdupq_lane_f64(__a, __b) \\\n __aarch64_vdup_lane_any (f64, q, __a, __b)\n-#define __aarch64_vdupq_lane_p8(__a, __b) \\\n- __aarch64_vdup_lane_any (p8, q, __a, __b)\n-#define __aarch64_vdupq_lane_p16(__a, __b) \\\n- __aarch64_vdup_lane_any (p16, q, __a, __b)\n-#define __aarch64_vdupq_lane_p64(__a, __b) \\\n- __aarch64_vdup_lane_any (p64, q, __a, __b)\n-#define __aarch64_vdupq_lane_s8(__a, __b) \\\n- __aarch64_vdup_lane_any (s8, q, __a, __b)\n-#define __aarch64_vdupq_lane_s16(__a, __b) \\\n- __aarch64_vdup_lane_any (s16, q, __a, __b)\n-#define __aarch64_vdupq_lane_s32(__a, __b) \\\n- __aarch64_vdup_lane_any (s32, q, __a, __b)\n-#define __aarch64_vdupq_lane_s64(__a, __b) \\\n- __aarch64_vdup_lane_any (s64, q, __a, __b)\n-#define __aarch64_vdupq_lane_u8(__a, __b) \\\n- __aarch64_vdup_lane_any (u8, q, __a, __b)\n-#define __aarch64_vdupq_lane_u16(__a, __b) \\\n- __aarch64_vdup_lane_any (u16, q, __a, __b)\n-#define __aarch64_vdupq_lane_u32(__a, __b) \\\n- __aarch64_vdup_lane_any (u32, q, __a, __b)\n-#define __aarch64_vdupq_lane_u64(__a, __b) \\\n- __aarch64_vdup_lane_any (u64, q, __a, __b)\n \n /* __aarch64_vdupq_laneq internal macros. */\n #define __aarch64_vdupq_laneq_f16(__a, __b) \\\n@@ -139,28 +73,6 @@\n __aarch64_vdup_lane_any (f32, q, __a, __b)\n #define __aarch64_vdupq_laneq_f64(__a, __b) \\\n __aarch64_vdup_lane_any (f64, q, __a, __b)\n-#define __aarch64_vdupq_laneq_p8(__a, __b) \\\n- __aarch64_vdup_lane_any (p8, q, __a, __b)\n-#define __aarch64_vdupq_laneq_p16(__a, __b) \\\n- __aarch64_vdup_lane_any (p16, q, __a, __b)\n-#define __aarch64_vdupq_laneq_p64(__a, __b) \\\n- __aarch64_vdup_lane_any (p64, q, __a, __b)\n-#define __aarch64_vdupq_laneq_s8(__a, __b) \\\n- __aarch64_vdup_lane_any (s8, q, __a, __b)\n-#define __aarch64_vdupq_laneq_s16(__a, __b) \\\n- __aarch64_vdup_lane_any (s16, q, __a, __b)\n-#define __aarch64_vdupq_laneq_s32(__a, __b) \\\n- __aarch64_vdup_lane_any (s32, q, __a, __b)\n-#define __aarch64_vdupq_laneq_s64(__a, __b) \\\n- __aarch64_vdup_lane_any (s64, q, __a, __b)\n-#define __aarch64_vdupq_laneq_u8(__a, __b) \\\n- __aarch64_vdup_lane_any (u8, q, __a, __b)\n-#define __aarch64_vdupq_laneq_u16(__a, __b) \\\n- __aarch64_vdup_lane_any (u16, q, __a, __b)\n-#define __aarch64_vdupq_laneq_u32(__a, __b) \\\n- __aarch64_vdup_lane_any (u32, q, __a, __b)\n-#define __aarch64_vdupq_laneq_u64(__a, __b) \\\n- __aarch64_vdup_lane_any (u64, q, __a, __b)\n \n /* Internal macro for lane indices. */\n \n@@ -2349,8768 +2261,6895 @@ vqrdmulhq_s32 (int32x4_t __a, int32x4_t __b)\n return (int32x4_t) __builtin_aarch64_sqrdmulhv4si (__a, __b);\n }\n \n+/* Start of temporary inline asm implementations. */\n+\n __extension__ extern __inline int8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcreate_s8 (uint64_t __a)\n+vaba_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)\n {\n- return (int8x8_t) __a;\n+ return __builtin_aarch64_sabav8qi (__a, __b, __c);\n }\n \n __extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcreate_s16 (uint64_t __a)\n+vaba_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)\n {\n- return (int16x4_t) __a;\n+ return __builtin_aarch64_sabav4hi (__a, __b, __c);\n }\n \n __extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcreate_s32 (uint64_t __a)\n+vaba_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)\n {\n- return (int32x2_t) __a;\n+ return __builtin_aarch64_sabav2si (__a, __b, __c);\n }\n \n-__extension__ extern __inline int64x1_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcreate_s64 (uint64_t __a)\n+vaba_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)\n {\n- return (int64x1_t) {__a};\n+ return __builtin_aarch64_uabav8qi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline float16x4_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcreate_f16 (uint64_t __a)\n+vaba_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)\n {\n- return (float16x4_t) __a;\n+ return __builtin_aarch64_uabav4hi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline float32x2_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcreate_f32 (uint64_t __a)\n+vaba_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)\n {\n- return (float32x2_t) __a;\n+ return __builtin_aarch64_uabav2si_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint8x8_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcreate_u8 (uint64_t __a)\n+vabal_high_s8 (int16x8_t __a, int8x16_t __b, int8x16_t __c)\n {\n- return (uint8x8_t) __a;\n+ return __builtin_aarch64_sabal2v16qi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcreate_u16 (uint64_t __a)\n+vabal_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)\n {\n- return (uint16x4_t) __a;\n+ return __builtin_aarch64_sabal2v8hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcreate_u32 (uint64_t __a)\n+vabal_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)\n {\n- return (uint32x2_t) __a;\n+ return __builtin_aarch64_sabal2v4si (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcreate_u64 (uint64_t __a)\n+vabal_high_u8 (uint16x8_t __a, uint8x16_t __b, uint8x16_t __c)\n {\n- return (uint64x1_t) {__a};\n+ return __builtin_aarch64_uabal2v16qi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline float64x1_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcreate_f64 (uint64_t __a)\n+vabal_high_u16 (uint32x4_t __a, uint16x8_t __b, uint16x8_t __c)\n {\n- return (float64x1_t) __a;\n+ return __builtin_aarch64_uabal2v8hi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline poly8x8_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcreate_p8 (uint64_t __a)\n+vabal_high_u32 (uint64x2_t __a, uint32x4_t __b, uint32x4_t __c)\n {\n- return (poly8x8_t) __a;\n+ return __builtin_aarch64_uabal2v4si_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline poly16x4_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcreate_p16 (uint64_t __a)\n+vabal_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c)\n {\n- return (poly16x4_t) __a;\n+ return __builtin_aarch64_sabalv8qi (__a, __b, __c);\n }\n \n-__extension__ extern __inline poly64x1_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcreate_p64 (uint64_t __a)\n+vabal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)\n {\n- return (poly64x1_t) __a;\n+ return __builtin_aarch64_sabalv4hi (__a, __b, __c);\n }\n \n-/* vget_lane */\n-\n-__extension__ extern __inline float16_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vget_lane_f16 (float16x4_t __a, const int __b)\n+vabal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_sabalv2si (__a, __b, __c);\n }\n \n-__extension__ extern __inline float32_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vget_lane_f32 (float32x2_t __a, const int __b)\n+vabal_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_uabalv8qi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline float64_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vget_lane_f64 (float64x1_t __a, const int __b)\n+vabal_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_uabalv4hi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline poly8_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vget_lane_p8 (poly8x8_t __a, const int __b)\n+vabal_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_uabalv2si_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline poly16_t\n+__extension__ extern __inline int8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vget_lane_p16 (poly16x4_t __a, const int __b)\n+vabaq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_sabav16qi (__a, __b, __c);\n }\n \n-__extension__ extern __inline poly64_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vget_lane_p64 (poly64x1_t __a, const int __b)\n+vabaq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_sabav8hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline int8_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vget_lane_s8 (int8x8_t __a, const int __b)\n+vabaq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_sabav4si (__a, __b, __c);\n }\n \n-__extension__ extern __inline int16_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vget_lane_s16 (int16x4_t __a, const int __b)\n+vabaq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_uabav16qi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline int32_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vget_lane_s32 (int32x2_t __a, const int __b)\n+vabaq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_uabav8hi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline int64_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vget_lane_s64 (int64x1_t __a, const int __b)\n+vabaq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_uabav4si_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint8_t\n+__extension__ extern __inline int8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vget_lane_u8 (uint8x8_t __a, const int __b)\n+vabd_s8 (int8x8_t __a, int8x8_t __b)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_sabdv8qi (__a, __b);\n }\n \n-__extension__ extern __inline uint16_t\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vget_lane_u16 (uint16x4_t __a, const int __b)\n+vabd_s16 (int16x4_t __a, int16x4_t __b)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_sabdv4hi (__a, __b);\n }\n \n-__extension__ extern __inline uint32_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vget_lane_u32 (uint32x2_t __a, const int __b)\n+vabd_s32 (int32x2_t __a, int32x2_t __b)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_sabdv2si (__a, __b);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vget_lane_u64 (uint64x1_t __a, const int __b)\n+vabd_u8 (uint8x8_t __a, uint8x8_t __b)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_uabdv8qi_uuu (__a, __b);\n }\n \n-/* vgetq_lane */\n-\n-__extension__ extern __inline float16_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vgetq_lane_f16 (float16x8_t __a, const int __b)\n+vabd_u16 (uint16x4_t __a, uint16x4_t __b)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_uabdv4hi_uuu (__a, __b);\n }\n \n-__extension__ extern __inline float32_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vgetq_lane_f32 (float32x4_t __a, const int __b)\n+vabd_u32 (uint32x2_t __a, uint32x2_t __b)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_uabdv2si_uuu (__a, __b);\n }\n \n-__extension__ extern __inline float64_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vgetq_lane_f64 (float64x2_t __a, const int __b)\n+vabdl_high_s8 (int8x16_t __a, int8x16_t __b)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_sabdl2v16qi (__a, __b);\n }\n \n-__extension__ extern __inline poly8_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vgetq_lane_p8 (poly8x16_t __a, const int __b)\n+vabdl_high_s16 (int16x8_t __a, int16x8_t __b)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_sabdl2v8hi (__a, __b);\n }\n \n-__extension__ extern __inline poly16_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vgetq_lane_p16 (poly16x8_t __a, const int __b)\n+vabdl_high_s32 (int32x4_t __a, int32x4_t __b)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_sabdl2v4si (__a, __b);\n }\n \n-__extension__ extern __inline poly64_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vgetq_lane_p64 (poly64x2_t __a, const int __b)\n+vabdl_high_u8 (uint8x16_t __a, uint8x16_t __b)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_uabdl2v16qi_uuu (__a, __b);\n }\n \n-__extension__ extern __inline int8_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vgetq_lane_s8 (int8x16_t __a, const int __b)\n+vabdl_high_u16 (uint16x8_t __a, uint16x8_t __b)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_uabdl2v8hi_uuu (__a, __b);\n }\n \n-__extension__ extern __inline int16_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vgetq_lane_s16 (int16x8_t __a, const int __b)\n+vabdl_high_u32 (uint32x4_t __a, uint32x4_t __b)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_uabdl2v4si_uuu (__a, __b);\n }\n \n-__extension__ extern __inline int32_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vgetq_lane_s32 (int32x4_t __a, const int __b)\n+vabdl_s8 (int8x8_t __a, int8x8_t __b)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_sabdlv8qi (__a, __b);\n }\n \n-__extension__ extern __inline int64_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vgetq_lane_s64 (int64x2_t __a, const int __b)\n+vabdl_s16 (int16x4_t __a, int16x4_t __b)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_sabdlv4hi (__a, __b);\n }\n \n-__extension__ extern __inline uint8_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vgetq_lane_u8 (uint8x16_t __a, const int __b)\n+vabdl_s32 (int32x2_t __a, int32x2_t __b)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_sabdlv2si (__a, __b);\n }\n \n-__extension__ extern __inline uint16_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vgetq_lane_u16 (uint16x8_t __a, const int __b)\n+vabdl_u8 (uint8x8_t __a, uint8x8_t __b)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_uabdlv8qi_uuu (__a, __b);\n }\n \n-__extension__ extern __inline uint32_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vgetq_lane_u32 (uint32x4_t __a, const int __b)\n+vabdl_u16 (uint16x4_t __a, uint16x4_t __b)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_uabdlv4hi_uuu (__a, __b);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vgetq_lane_u64 (uint64x2_t __a, const int __b)\n+vabdl_u32 (uint32x2_t __a, uint32x2_t __b)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_uabdlv2si_uuu (__a, __b);\n }\n \n-/* vset_lane */\n-\n-__extension__ extern __inline float16x4_t\n+__extension__ extern __inline int8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vset_lane_f16 (float16_t __elem, float16x4_t __vec, const int __index)\n+vabdq_s8 (int8x16_t __a, int8x16_t __b)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_sabdv16qi (__a, __b);\n }\n \n-__extension__ extern __inline float32x2_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vset_lane_f32 (float32_t __elem, float32x2_t __vec, const int __index)\n+vabdq_s16 (int16x8_t __a, int16x8_t __b)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_sabdv8hi (__a, __b);\n }\n \n-__extension__ extern __inline float64x1_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vset_lane_f64 (float64_t __elem, float64x1_t __vec, const int __index)\n+vabdq_s32 (int32x4_t __a, int32x4_t __b)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_sabdv4si (__a, __b);\n }\n \n-__extension__ extern __inline poly8x8_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vset_lane_p8 (poly8_t __elem, poly8x8_t __vec, const int __index)\n+vabdq_u8 (uint8x16_t __a, uint8x16_t __b)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_uabdv16qi_uuu (__a, __b);\n }\n \n-__extension__ extern __inline poly16x4_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vset_lane_p16 (poly16_t __elem, poly16x4_t __vec, const int __index)\n+vabdq_u16 (uint16x8_t __a, uint16x8_t __b)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_uabdv8hi_uuu (__a, __b);\n }\n \n-__extension__ extern __inline poly64x1_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vset_lane_p64 (poly64_t __elem, poly64x1_t __vec, const int __index)\n+vabdq_u32 (uint32x4_t __a, uint32x4_t __b)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_uabdv4si_uuu (__a, __b);\n }\n \n-__extension__ extern __inline int8x8_t\n+__extension__ extern __inline int16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vset_lane_s8 (int8_t __elem, int8x8_t __vec, const int __index)\n+vaddlv_s8 (int8x8_t __a)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_saddlvv8qi (__a);\n }\n \n-__extension__ extern __inline int16x4_t\n+__extension__ extern __inline int32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vset_lane_s16 (int16_t __elem, int16x4_t __vec, const int __index)\n+vaddlv_s16 (int16x4_t __a)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_saddlvv4hi (__a);\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline uint16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vset_lane_s32 (int32_t __elem, int32x2_t __vec, const int __index)\n+vaddlv_u8 (uint8x8_t __a)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_uaddlvv8qi_uu (__a);\n }\n \n-__extension__ extern __inline int64x1_t\n+__extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vset_lane_s64 (int64_t __elem, int64x1_t __vec, const int __index)\n+vaddlv_u16 (uint16x4_t __a)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_uaddlvv4hi_uu (__a);\n }\n \n-__extension__ extern __inline uint8x8_t\n+__extension__ extern __inline int16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vset_lane_u8 (uint8_t __elem, uint8x8_t __vec, const int __index)\n+vaddlvq_s8 (int8x16_t __a)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_saddlvv16qi (__a);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline int32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vset_lane_u16 (uint16_t __elem, uint16x4_t __vec, const int __index)\n+vaddlvq_s16 (int16x8_t __a)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_saddlvv8hi (__a);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline int64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vset_lane_u32 (uint32_t __elem, uint32x2_t __vec, const int __index)\n+vaddlvq_s32 (int32x4_t __a)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_saddlvv4si (__a);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline uint16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vset_lane_u64 (uint64_t __elem, uint64x1_t __vec, const int __index)\n+vaddlvq_u8 (uint8x16_t __a)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_uaddlvv16qi_uu (__a);\n }\n \n-/* vsetq_lane */\n-\n-__extension__ extern __inline float16x8_t\n+__extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsetq_lane_f16 (float16_t __elem, float16x8_t __vec, const int __index)\n+vaddlvq_u16 (uint16x8_t __a)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_uaddlvv8hi_uu (__a);\n }\n \n-__extension__ extern __inline float32x4_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsetq_lane_f32 (float32_t __elem, float32x4_t __vec, const int __index)\n+vaddlvq_u32 (uint32x4_t __a)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_uaddlvv4si_uu (__a);\n }\n \n-__extension__ extern __inline float64x2_t\n+__extension__ extern __inline float32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsetq_lane_f64 (float64_t __elem, float64x2_t __vec, const int __index)\n+vcvtx_f32_f64 (float64x2_t __a)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_float_trunc_rodd_lo_v2sf (__a);\n }\n \n-__extension__ extern __inline poly8x16_t\n+__extension__ extern __inline float32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsetq_lane_p8 (poly8_t __elem, poly8x16_t __vec, const int __index)\n+vcvtx_high_f32_f64 (float32x2_t __a, float64x2_t __b)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_float_trunc_rodd_hi_v4sf (__a, __b);\n }\n \n-__extension__ extern __inline poly16x8_t\n+__extension__ extern __inline float32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsetq_lane_p16 (poly16_t __elem, poly16x8_t __vec, const int __index)\n+vcvtxd_f32_f64 (float64_t __a)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_float_trunc_rodd_df (__a);\n }\n \n-__extension__ extern __inline poly64x2_t\n+__extension__ extern __inline float32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsetq_lane_p64 (poly64_t __elem, poly64x2_t __vec, const int __index)\n+vmla_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_float_mla_nv2sf (__a, __b, __c);\n }\n \n-__extension__ extern __inline int8x16_t\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsetq_lane_s8 (int8_t __elem, int8x16_t __vec, const int __index)\n+vmla_n_s16 (int16x4_t __a, int16x4_t __b, int16_t __c)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_mla_nv4hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsetq_lane_s16 (int16_t __elem, int16x8_t __vec, const int __index)\n+vmla_n_s32 (int32x2_t __a, int32x2_t __b, int32_t __c)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_mla_nv2si (__a, __b, __c);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsetq_lane_s32 (int32_t __elem, int32x4_t __vec, const int __index)\n+vmla_n_u16 (uint16x4_t __a, uint16x4_t __b, uint16_t __c)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_mla_nv4hi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsetq_lane_s64 (int64_t __elem, int64x2_t __vec, const int __index)\n+vmla_n_u32 (uint32x2_t __a, uint32x2_t __b, uint32_t __c)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_mla_nv2si_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline int8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsetq_lane_u8 (uint8_t __elem, uint8x16_t __vec, const int __index)\n+vmla_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_mlav8qi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsetq_lane_u16 (uint16_t __elem, uint16x8_t __vec, const int __index)\n+vmla_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_mlav4hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsetq_lane_u32 (uint32_t __elem, uint32x4_t __vec, const int __index)\n+vmla_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_mlav2si (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsetq_lane_u64 (uint64_t __elem, uint64x2_t __vec, const int __index)\n+vmla_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)\n {\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n+ return __builtin_aarch64_mlav8qi_uuuu (__a, __b, __c);\n }\n \n-\n-__extension__ extern __inline int8x16_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcombine_s8 (int8x8_t __a, int8x8_t __b)\n+vmla_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)\n {\n- return __builtin_aarch64_combinev8qi (__a, __b);\n+ return __builtin_aarch64_mlav4hi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcombine_s16 (int16x4_t __a, int16x4_t __b)\n+vmla_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)\n {\n- return __builtin_aarch64_combinev4hi (__a, __b);\n+ return __builtin_aarch64_mlav2si_uuuu (__a, __b, __c);\n }\n \n __extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcombine_s32 (int32x2_t __a, int32x2_t __b)\n+vmlal_high_lane_s16(int32x4_t __a, int16x8_t __b, int16x4_t __v,\n+\t\t const int __lane)\n {\n- return __builtin_aarch64_combinev2si (__a, __b);\n+ return __builtin_aarch64_smlal_hi_lanev8hi (__a, __b, __v, __lane);\n }\n \n __extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcombine_s64 (int64x1_t __a, int64x1_t __b)\n+vmlal_high_lane_s32(int64x2_t __a, int32x4_t __b, int32x2_t __v,\n+\t\t const int __lane)\n {\n- return __builtin_aarch64_combinedi (__a[0], __b[0]);\n+ return __builtin_aarch64_smlal_hi_lanev4si (__a, __b, __v, __lane);\n }\n \n-__extension__ extern __inline float16x8_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcombine_f16 (float16x4_t __a, float16x4_t __b)\n+vmlal_high_lane_u16(uint32x4_t __a, uint16x8_t __b, uint16x4_t __v,\n+\t\t const int __lane)\n {\n- return __builtin_aarch64_combinev4hf (__a, __b);\n+ return __builtin_aarch64_umlal_hi_lanev8hi_uuuus (__a, __b, __v, __lane);\n }\n \n-__extension__ extern __inline float32x4_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcombine_f32 (float32x2_t __a, float32x2_t __b)\n+vmlal_high_lane_u32(uint64x2_t __a, uint32x4_t __b, uint32x2_t __v,\n+\t\t const int __lane)\n {\n- return __builtin_aarch64_combinev2sf (__a, __b);\n+ return __builtin_aarch64_umlal_hi_lanev4si_uuuus (__a, __b, __v, __lane);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcombine_u8 (uint8x8_t __a, uint8x8_t __b)\n+vmlal_high_laneq_s16(int32x4_t __a, int16x8_t __b, int16x8_t __v,\n+\t\t const int __lane)\n {\n- return __builtin_aarch64_combinev8qi_uuu (__a, __b);\n+ return __builtin_aarch64_smlal_hi_laneqv8hi (__a, __b, __v, __lane);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcombine_u16 (uint16x4_t __a, uint16x4_t __b)\n+vmlal_high_laneq_s32(int64x2_t __a, int32x4_t __b, int32x4_t __v,\n+\t\t const int __lane)\n {\n- return __builtin_aarch64_combinev4hi_uuu (__a, __b);\n+ return __builtin_aarch64_smlal_hi_laneqv4si (__a, __b, __v, __lane);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcombine_u32 (uint32x2_t __a, uint32x2_t __b)\n+vmlal_high_laneq_u16(uint32x4_t __a, uint16x8_t __b, uint16x8_t __v,\n+\t\t const int __lane)\n {\n- return __builtin_aarch64_combinev2si_uuu (__a, __b);\n+ return __builtin_aarch64_umlal_hi_laneqv8hi_uuuus (__a, __b, __v, __lane);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcombine_u64 (uint64x1_t __a, uint64x1_t __b)\n-{\n- return __builtin_aarch64_combinedi_uuu (__a[0], __b[0]);\n-}\n-\n-__extension__ extern __inline float64x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcombine_f64 (float64x1_t __a, float64x1_t __b)\n+vmlal_high_laneq_u32(uint64x2_t __a, uint32x4_t __b, uint32x4_t __v,\n+\t\t const int __lane)\n {\n- return __builtin_aarch64_combinedf (__a[0], __b[0]);\n+ return __builtin_aarch64_umlal_hi_laneqv4si_uuuus (__a, __b, __v, __lane);\n }\n \n-__extension__ extern __inline poly8x16_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcombine_p8 (poly8x8_t __a, poly8x8_t __b)\n+vmlal_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c)\n {\n- return __builtin_aarch64_combinev8qi_ppp (__a, __b);\n+ return __builtin_aarch64_smlal_hi_nv8hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline poly16x8_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcombine_p16 (poly16x4_t __a, poly16x4_t __b)\n+vmlal_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c)\n {\n- return __builtin_aarch64_combinev4hi_ppp (__a, __b);\n+ return __builtin_aarch64_smlal_hi_nv4si (__a, __b, __c);\n }\n \n-__extension__ extern __inline poly64x2_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcombine_p64 (poly64x1_t __a, poly64x1_t __b)\n+vmlal_high_n_u16 (uint32x4_t __a, uint16x8_t __b, uint16_t __c)\n {\n- return __builtin_aarch64_combinedi_ppp (__a[0], __b[0]);\n+ return __builtin_aarch64_umlal_hi_nv8hi_uuuu (__a, __b, __c);\n }\n \n-/* Start of temporary inline asm implementations. */\n-\n-__extension__ extern __inline int8x8_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaba_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)\n+vmlal_high_n_u32 (uint64x2_t __a, uint32x4_t __b, uint32_t __c)\n {\n- return __builtin_aarch64_sabav8qi (__a, __b, __c);\n+ return __builtin_aarch64_umlal_hi_nv4si_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline int16x4_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaba_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)\n+vmlal_high_s8 (int16x8_t __a, int8x16_t __b, int8x16_t __c)\n {\n- return __builtin_aarch64_sabav4hi (__a, __b, __c);\n+ return __builtin_aarch64_smlal_hiv16qi (__a, __b, __c);\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaba_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)\n+vmlal_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)\n {\n- return __builtin_aarch64_sabav2si (__a, __b, __c);\n+ return __builtin_aarch64_smlal_hiv8hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint8x8_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaba_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)\n+vmlal_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)\n {\n- return __builtin_aarch64_uabav8qi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_smlal_hiv4si (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaba_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)\n+vmlal_high_u8 (uint16x8_t __a, uint8x16_t __b, uint8x16_t __c)\n {\n- return __builtin_aarch64_uabav4hi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_umlal_hiv16qi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaba_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)\n+vmlal_high_u16 (uint32x4_t __a, uint16x8_t __b, uint16x8_t __c)\n {\n- return __builtin_aarch64_uabav2si_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_umlal_hiv8hi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabal_high_s8 (int16x8_t __a, int8x16_t __b, int8x16_t __c)\n+vmlal_high_u32 (uint64x2_t __a, uint32x4_t __b, uint32x4_t __c)\n {\n- return __builtin_aarch64_sabal2v16qi (__a, __b, __c);\n+ return __builtin_aarch64_umlal_hiv4si_uuuu (__a, __b, __c);\n }\n \n __extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabal_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)\n+vmlal_lane_s16 (int32x4_t __acc, int16x4_t __a, int16x4_t __b, const int __c)\n {\n- return __builtin_aarch64_sabal2v8hi (__a, __b, __c);\n+ return __builtin_aarch64_vec_smlal_lane_v4hi (__acc, __a, __b, __c);\n }\n \n __extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabal_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)\n+vmlal_lane_s32 (int64x2_t __acc, int32x2_t __a, int32x2_t __b, const int __c)\n {\n- return __builtin_aarch64_sabal2v4si (__a, __b, __c);\n+ return __builtin_aarch64_vec_smlal_lane_v2si (__acc, __a, __b, __c);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabal_high_u8 (uint16x8_t __a, uint8x16_t __b, uint8x16_t __c)\n+vmlal_lane_u16 (uint32x4_t __acc, uint16x4_t __a, uint16x4_t __b, const int __c)\n {\n- return __builtin_aarch64_uabal2v16qi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_vec_umlal_lane_v4hi_uuuus (__acc, __a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabal_high_u16 (uint32x4_t __a, uint16x8_t __b, uint16x8_t __c)\n+vmlal_lane_u32 (uint64x2_t __acc, uint32x2_t __a, uint32x2_t __b, const int __c)\n {\n- return __builtin_aarch64_uabal2v8hi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_vec_umlal_lane_v2si_uuuus (__acc, __a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabal_high_u32 (uint64x2_t __a, uint32x4_t __b, uint32x4_t __c)\n+vmlal_laneq_s16 (int32x4_t __acc, int16x4_t __a, int16x8_t __b, const int __c)\n {\n- return __builtin_aarch64_uabal2v4si_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_vec_smlal_laneq_v4hi (__acc, __a, __b, __c);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabal_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c)\n+vmlal_laneq_s32 (int64x2_t __acc, int32x2_t __a, int32x4_t __b, const int __c)\n {\n- return __builtin_aarch64_sabalv8qi (__a, __b, __c);\n+ return __builtin_aarch64_vec_smlal_laneq_v2si (__acc, __a, __b, __c);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)\n+vmlal_laneq_u16 (uint32x4_t __acc, uint16x4_t __a, uint16x8_t __b, const int __c)\n {\n- return __builtin_aarch64_sabalv4hi (__a, __b, __c);\n+ return __builtin_aarch64_vec_umlal_laneq_v4hi_uuuus (__acc, __a, __b, __c);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)\n+vmlal_laneq_u32 (uint64x2_t __acc, uint32x2_t __a, uint32x4_t __b, const int __c)\n {\n- return __builtin_aarch64_sabalv2si (__a, __b, __c);\n+ return __builtin_aarch64_vec_umlal_laneq_v2si_uuuus (__acc, __a, __b, __c);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabal_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c)\n+vmlal_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)\n {\n- return __builtin_aarch64_uabalv8qi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_smlal_nv4hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabal_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c)\n+vmlal_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)\n {\n- return __builtin_aarch64_uabalv4hi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_smlal_nv2si (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabal_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c)\n+vmlal_n_u16 (uint32x4_t __a, uint16x4_t __b, uint16_t __c)\n {\n- return __builtin_aarch64_uabalv2si_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_umlal_nv4hi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline int8x16_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabaq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)\n+vmlal_n_u32 (uint64x2_t __a, uint32x2_t __b, uint32_t __c)\n {\n- return __builtin_aarch64_sabav16qi (__a, __b, __c);\n+ return __builtin_aarch64_umlal_nv2si_uuuu (__a, __b, __c);\n }\n \n __extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabaq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)\n+vmlal_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c)\n {\n- return __builtin_aarch64_sabav8hi (__a, __b, __c);\n+ return __builtin_aarch64_smlalv8qi (__a, __b, __c);\n }\n \n __extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabaq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)\n+vmlal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)\n {\n- return __builtin_aarch64_sabav4si (__a, __b, __c);\n+ return __builtin_aarch64_smlalv4hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabaq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)\n+vmlal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)\n {\n- return __builtin_aarch64_uabav16qi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_smlalv2si (__a, __b, __c);\n }\n \n __extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabaq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)\n+vmlal_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c)\n {\n- return __builtin_aarch64_uabav8hi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_umlalv8qi_uuuu (__a, __b, __c);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabaq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)\n+vmlal_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c)\n {\n- return __builtin_aarch64_uabav4si_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_umlalv4hi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline int8x8_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabd_s8 (int8x8_t __a, int8x8_t __b)\n+vmlal_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c)\n {\n- return __builtin_aarch64_sabdv8qi (__a, __b);\n+ return __builtin_aarch64_umlalv2si_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline int16x4_t\n+__extension__ extern __inline float32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabd_s16 (int16x4_t __a, int16x4_t __b)\n+vmlaq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c)\n {\n- return __builtin_aarch64_sabdv4hi (__a, __b);\n+ return __builtin_aarch64_float_mla_nv4sf (__a, __b, __c);\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabd_s32 (int32x2_t __a, int32x2_t __b)\n+vmlaq_n_s16 (int16x8_t __a, int16x8_t __b, int16_t __c)\n {\n- return __builtin_aarch64_sabdv2si (__a, __b);\n+ return __builtin_aarch64_mla_nv8hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint8x8_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabd_u8 (uint8x8_t __a, uint8x8_t __b)\n+vmlaq_n_s32 (int32x4_t __a, int32x4_t __b, int32_t __c)\n {\n- return __builtin_aarch64_uabdv8qi_uuu (__a, __b);\n+ return __builtin_aarch64_mla_nv4si (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabd_u16 (uint16x4_t __a, uint16x4_t __b)\n+vmlaq_n_u16 (uint16x8_t __a, uint16x8_t __b, uint16_t __c)\n {\n- return __builtin_aarch64_uabdv4hi_uuu (__a, __b);\n+ return __builtin_aarch64_mla_nv8hi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabd_u32 (uint32x2_t __a, uint32x2_t __b)\n+vmlaq_n_u32 (uint32x4_t __a, uint32x4_t __b, uint32_t __c)\n {\n- return __builtin_aarch64_uabdv2si_uuu (__a, __b);\n+ return __builtin_aarch64_mla_nv4si_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline int8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabdl_high_s8 (int8x16_t __a, int8x16_t __b)\n+vmlaq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)\n {\n- return __builtin_aarch64_sabdl2v16qi (__a, __b);\n+ return __builtin_aarch64_mlav16qi (__a, __b, __c);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabdl_high_s16 (int16x8_t __a, int16x8_t __b)\n+vmlaq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)\n {\n- return __builtin_aarch64_sabdl2v8hi (__a, __b);\n+ return __builtin_aarch64_mlav8hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabdl_high_s32 (int32x4_t __a, int32x4_t __b)\n+vmlaq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)\n {\n- return __builtin_aarch64_sabdl2v4si (__a, __b);\n+ return __builtin_aarch64_mlav4si (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabdl_high_u8 (uint8x16_t __a, uint8x16_t __b)\n+vmlaq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)\n {\n- return __builtin_aarch64_uabdl2v16qi_uuu (__a, __b);\n+ return __builtin_aarch64_mlav16qi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabdl_high_u16 (uint16x8_t __a, uint16x8_t __b)\n+vmlaq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)\n {\n- return __builtin_aarch64_uabdl2v8hi_uuu (__a, __b);\n+ return __builtin_aarch64_mlav8hi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabdl_high_u32 (uint32x4_t __a, uint32x4_t __b)\n+vmlaq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)\n {\n- return __builtin_aarch64_uabdl2v4si_uuu (__a, __b);\n+ return __builtin_aarch64_mlav4si_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline float32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabdl_s8 (int8x8_t __a, int8x8_t __b)\n+vmls_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c)\n {\n- return __builtin_aarch64_sabdlv8qi (__a, __b);\n+ return __builtin_aarch64_float_mls_nv2sf (__a, __b, __c);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabdl_s16 (int16x4_t __a, int16x4_t __b)\n+vmls_n_s16 (int16x4_t __a, int16x4_t __b, int16_t __c)\n {\n- return __builtin_aarch64_sabdlv4hi (__a, __b);\n+ return __builtin_aarch64_mls_nv4hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabdl_s32 (int32x2_t __a, int32x2_t __b)\n+vmls_n_s32 (int32x2_t __a, int32x2_t __b, int32_t __c)\n {\n- return __builtin_aarch64_sabdlv2si (__a, __b);\n+ return __builtin_aarch64_mls_nv2si (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabdl_u8 (uint8x8_t __a, uint8x8_t __b)\n+vmls_n_u16 (uint16x4_t __a, uint16x4_t __b, uint16_t __c)\n {\n- return __builtin_aarch64_uabdlv8qi_uuu (__a, __b);\n+ return __builtin_aarch64_mls_nv4hi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabdl_u16 (uint16x4_t __a, uint16x4_t __b)\n+vmls_n_u32 (uint32x2_t __a, uint32x2_t __b, uint32_t __c)\n {\n- return __builtin_aarch64_uabdlv4hi_uuu (__a, __b);\n+ return __builtin_aarch64_mls_nv2si_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline int8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabdl_u32 (uint32x2_t __a, uint32x2_t __b)\n+vmls_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)\n {\n- return __builtin_aarch64_uabdlv2si_uuu (__a, __b);\n+ return __builtin_aarch64_mlsv8qi (__a, __b, __c);\n }\n \n-__extension__ extern __inline int8x16_t\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabdq_s8 (int8x16_t __a, int8x16_t __b)\n+vmls_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)\n {\n- return __builtin_aarch64_sabdv16qi (__a, __b);\n+ return __builtin_aarch64_mlsv4hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabdq_s16 (int16x8_t __a, int16x8_t __b)\n+vmls_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)\n {\n- return __builtin_aarch64_sabdv8hi (__a, __b);\n+ return __builtin_aarch64_mlsv2si (__a, __b, __c);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabdq_s32 (int32x4_t __a, int32x4_t __b)\n+vmls_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)\n {\n- return __builtin_aarch64_sabdv4si (__a, __b);\n+ return __builtin_aarch64_mlsv8qi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabdq_u8 (uint8x16_t __a, uint8x16_t __b)\n+vmls_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)\n {\n- return __builtin_aarch64_uabdv16qi_uuu (__a, __b);\n+ return __builtin_aarch64_mlsv4hi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabdq_u16 (uint16x8_t __a, uint16x8_t __b)\n+vmls_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)\n {\n- return __builtin_aarch64_uabdv8hi_uuu (__a, __b);\n+ return __builtin_aarch64_mlsv2si_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabdq_u32 (uint32x4_t __a, uint32x4_t __b)\n+vmlsl_high_lane_s16(int32x4_t __a, int16x8_t __b, int16x4_t __v,\n+\t\t const int __lane)\n {\n- return __builtin_aarch64_uabdv4si_uuu (__a, __b);\n+ return __builtin_aarch64_smlsl_hi_lanev8hi (__a, __b, __v, __lane);\n }\n \n-__extension__ extern __inline int16_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddlv_s8 (int8x8_t __a)\n+vmlsl_high_lane_s32(int64x2_t __a, int32x4_t __b, int32x2_t __v,\n+\t\t const int __lane)\n {\n- return __builtin_aarch64_saddlvv8qi (__a);\n+ return __builtin_aarch64_smlsl_hi_lanev4si (__a, __b, __v, __lane);\n }\n \n-__extension__ extern __inline int32_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddlv_s16 (int16x4_t __a)\n+vmlsl_high_lane_u16(uint32x4_t __a, uint16x8_t __b, uint16x4_t __v,\n+\t\t const int __lane)\n {\n- return __builtin_aarch64_saddlvv4hi (__a);\n+ return __builtin_aarch64_umlsl_hi_lanev8hi_uuuus (__a, __b, __v, __lane);\n }\n \n-__extension__ extern __inline uint16_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddlv_u8 (uint8x8_t __a)\n+vmlsl_high_lane_u32(uint64x2_t __a, uint32x4_t __b, uint32x2_t __v,\n+\t\t const int __lane)\n {\n- return __builtin_aarch64_uaddlvv8qi_uu (__a);\n+ return __builtin_aarch64_umlsl_hi_lanev4si_uuuus (__a, __b, __v, __lane);\n }\n \n-__extension__ extern __inline uint32_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddlv_u16 (uint16x4_t __a)\n+vmlsl_high_laneq_s16(int32x4_t __a, int16x8_t __b, int16x8_t __v,\n+\t\t const int __lane)\n {\n- return __builtin_aarch64_uaddlvv4hi_uu (__a);\n+ return __builtin_aarch64_smlsl_hi_laneqv8hi (__a, __b, __v, __lane);\n }\n \n-__extension__ extern __inline int16_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddlvq_s8 (int8x16_t __a)\n+vmlsl_high_laneq_s32(int64x2_t __a, int32x4_t __b, int32x4_t __v,\n+\t\t const int __lane)\n {\n- return __builtin_aarch64_saddlvv16qi (__a);\n+ return __builtin_aarch64_smlsl_hi_laneqv4si (__a, __b, __v, __lane);\n }\n \n-__extension__ extern __inline int32_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddlvq_s16 (int16x8_t __a)\n+vmlsl_high_laneq_u16(uint32x4_t __a, uint16x8_t __b, uint16x8_t __v,\n+\t\t const int __lane)\n {\n- return __builtin_aarch64_saddlvv8hi (__a);\n+ return __builtin_aarch64_umlsl_hi_laneqv8hi_uuuus (__a, __b, __v, __lane);\n }\n \n-__extension__ extern __inline int64_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddlvq_s32 (int32x4_t __a)\n+vmlsl_high_laneq_u32(uint64x2_t __a, uint32x4_t __b, uint32x4_t __v,\n+\t\t const int __lane)\n {\n- return __builtin_aarch64_saddlvv4si (__a);\n+ return __builtin_aarch64_umlsl_hi_laneqv4si_uuuus (__a, __b, __v, __lane);\n }\n \n-__extension__ extern __inline uint16_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddlvq_u8 (uint8x16_t __a)\n+vmlsl_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c)\n {\n- return __builtin_aarch64_uaddlvv16qi_uu (__a);\n+ return __builtin_aarch64_smlsl_hi_nv8hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddlvq_u16 (uint16x8_t __a)\n+vmlsl_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c)\n {\n- return __builtin_aarch64_uaddlvv8hi_uu (__a);\n+ return __builtin_aarch64_smlsl_hi_nv4si (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddlvq_u32 (uint32x4_t __a)\n+vmlsl_high_n_u16 (uint32x4_t __a, uint16x8_t __b, uint16_t __c)\n {\n- return __builtin_aarch64_uaddlvv4si_uu (__a);\n+ return __builtin_aarch64_umlsl_hi_nv8hi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline float32x2_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtx_f32_f64 (float64x2_t __a)\n+vmlsl_high_n_u32 (uint64x2_t __a, uint32x4_t __b, uint32_t __c)\n {\n- return __builtin_aarch64_float_trunc_rodd_lo_v2sf (__a);\n+ return __builtin_aarch64_umlsl_hi_nv4si_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline float32x4_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtx_high_f32_f64 (float32x2_t __a, float64x2_t __b)\n+vmlsl_high_s8 (int16x8_t __a, int8x16_t __b, int8x16_t __c)\n {\n- return __builtin_aarch64_float_trunc_rodd_hi_v4sf (__a, __b);\n+ return __builtin_aarch64_smlsl_hiv16qi (__a, __b, __c);\n }\n \n-__extension__ extern __inline float32_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtxd_f32_f64 (float64_t __a)\n+vmlsl_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)\n {\n- return __builtin_aarch64_float_trunc_rodd_df (__a);\n+ return __builtin_aarch64_smlsl_hiv8hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline float32x2_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmla_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c)\n+vmlsl_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)\n {\n- return __builtin_aarch64_float_mla_nv2sf (__a, __b, __c);\n+ return __builtin_aarch64_smlsl_hiv4si (__a, __b, __c);\n }\n \n-__extension__ extern __inline int16x4_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmla_n_s16 (int16x4_t __a, int16x4_t __b, int16_t __c)\n+vmlsl_high_u8 (uint16x8_t __a, uint8x16_t __b, uint8x16_t __c)\n {\n- return __builtin_aarch64_mla_nv4hi (__a, __b, __c);\n+ return __builtin_aarch64_umlsl_hiv16qi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmla_n_s32 (int32x2_t __a, int32x2_t __b, int32_t __c)\n+vmlsl_high_u16 (uint32x4_t __a, uint16x8_t __b, uint16x8_t __c)\n {\n- return __builtin_aarch64_mla_nv2si (__a, __b, __c);\n+ return __builtin_aarch64_umlsl_hiv8hi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmla_n_u16 (uint16x4_t __a, uint16x4_t __b, uint16_t __c)\n+vmlsl_high_u32 (uint64x2_t __a, uint32x4_t __b, uint32x4_t __c)\n {\n- return __builtin_aarch64_mla_nv4hi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_umlsl_hiv4si_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmla_n_u32 (uint32x2_t __a, uint32x2_t __b, uint32_t __c)\n+vmlsl_lane_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __v, const int __lane)\n {\n- return __builtin_aarch64_mla_nv2si_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_vec_smlsl_lane_v4hi (__a, __b, __v, __lane);\n }\n \n-__extension__ extern __inline int8x8_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmla_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)\n+vmlsl_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __v, const int __lane)\n {\n- return __builtin_aarch64_mlav8qi (__a, __b, __c);\n+ return __builtin_aarch64_vec_smlsl_lane_v2si (__a, __b, __v, __lane);\n }\n \n-__extension__ extern __inline int16x4_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmla_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)\n+vmlsl_lane_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __v,\n+ const int __lane)\n {\n- return __builtin_aarch64_mlav4hi (__a, __b, __c);\n+ return __builtin_aarch64_vec_umlsl_lane_v4hi_uuuus (__a, __b, __v, __lane);\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmla_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)\n+vmlsl_lane_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __v,\n+ const int __lane)\n {\n- return __builtin_aarch64_mlav2si (__a, __b, __c);\n+ return __builtin_aarch64_vec_umlsl_lane_v2si_uuuus (__a, __b, __v, __lane);\n }\n \n-__extension__ extern __inline uint8x8_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmla_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)\n+vmlsl_laneq_s16 (int32x4_t __a, int16x4_t __b, int16x8_t __v, const int __lane)\n {\n- return __builtin_aarch64_mlav8qi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_vec_smlsl_laneq_v4hi (__a, __b, __v, __lane);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmla_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)\n+vmlsl_laneq_s32 (int64x2_t __a, int32x2_t __b, int32x4_t __v, const int __lane)\n {\n- return __builtin_aarch64_mlav4hi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_vec_smlsl_laneq_v2si (__a, __b, __v, __lane);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmla_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)\n+vmlsl_laneq_u16 (uint32x4_t __a, uint16x4_t __b, uint16x8_t __v,\n+ const int __lane)\n {\n- return __builtin_aarch64_mlav2si_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_vec_umlsl_laneq_v4hi_uuuus (__a, __b, __v, __lane);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_high_lane_s16(int32x4_t __a, int16x8_t __b, int16x4_t __v,\n-\t\t const int __lane)\n-{\n- return __builtin_aarch64_smlal_hi_lanev8hi (__a, __b, __v, __lane);\n-}\n-\n-__extension__ extern __inline int64x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_high_lane_s32(int64x2_t __a, int32x4_t __b, int32x2_t __v,\n-\t\t const int __lane)\n+vmlsl_laneq_u32 (uint64x2_t __a, uint32x2_t __b, uint32x4_t __v,\n+ const int __lane)\n {\n- return __builtin_aarch64_smlal_hi_lanev4si (__a, __b, __v, __lane);\n+ return __builtin_aarch64_vec_umlsl_laneq_v2si_uuuus (__a, __b, __v, __lane);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_high_lane_u16(uint32x4_t __a, uint16x8_t __b, uint16x4_t __v,\n-\t\t const int __lane)\n+vmlsl_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)\n {\n- return __builtin_aarch64_umlal_hi_lanev8hi_uuuus (__a, __b, __v, __lane);\n+ return __builtin_aarch64_smlsl_nv4hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_high_lane_u32(uint64x2_t __a, uint32x4_t __b, uint32x2_t __v,\n-\t\t const int __lane)\n+vmlsl_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)\n {\n- return __builtin_aarch64_umlal_hi_lanev4si_uuuus (__a, __b, __v, __lane);\n+ return __builtin_aarch64_smlsl_nv2si (__a, __b, __c);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_high_laneq_s16(int32x4_t __a, int16x8_t __b, int16x8_t __v,\n-\t\t const int __lane)\n+vmlsl_n_u16 (uint32x4_t __a, uint16x4_t __b, uint16_t __c)\n {\n- return __builtin_aarch64_smlal_hi_laneqv8hi (__a, __b, __v, __lane);\n+ return __builtin_aarch64_umlsl_nv4hi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_high_laneq_s32(int64x2_t __a, int32x4_t __b, int32x4_t __v,\n-\t\t const int __lane)\n+vmlsl_n_u32 (uint64x2_t __a, uint32x2_t __b, uint32_t __c)\n {\n- return __builtin_aarch64_smlal_hi_laneqv4si (__a, __b, __v, __lane);\n+ return __builtin_aarch64_umlsl_nv2si_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_high_laneq_u16(uint32x4_t __a, uint16x8_t __b, uint16x8_t __v,\n-\t\t const int __lane)\n+vmlsl_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c)\n {\n- return __builtin_aarch64_umlal_hi_laneqv8hi_uuuus (__a, __b, __v, __lane);\n+ return __builtin_aarch64_smlslv8qi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_high_laneq_u32(uint64x2_t __a, uint32x4_t __b, uint32x4_t __v,\n-\t\t const int __lane)\n+vmlsl_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)\n {\n- return __builtin_aarch64_umlal_hi_laneqv4si_uuuus (__a, __b, __v, __lane);\n+ return __builtin_aarch64_smlslv4hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c)\n+vmlsl_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)\n {\n- return __builtin_aarch64_smlal_hi_nv8hi (__a, __b, __c);\n+ return __builtin_aarch64_smlslv2si (__a, __b, __c);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c)\n+vmlsl_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c)\n {\n- return __builtin_aarch64_smlal_hi_nv4si (__a, __b, __c);\n+ return __builtin_aarch64_umlslv8qi_uuuu (__a, __b, __c);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_high_n_u16 (uint32x4_t __a, uint16x8_t __b, uint16_t __c)\n+vmlsl_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c)\n {\n- return __builtin_aarch64_umlal_hi_nv8hi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_umlslv4hi_uuuu (__a, __b, __c);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_high_n_u32 (uint64x2_t __a, uint32x4_t __b, uint32_t __c)\n+vmlsl_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c)\n {\n- return __builtin_aarch64_umlal_hi_nv4si_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_umlslv2si_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline float32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_high_s8 (int16x8_t __a, int8x16_t __b, int8x16_t __c)\n+vmlsq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c)\n {\n- return __builtin_aarch64_smlal_hiv16qi (__a, __b, __c);\n+ return __builtin_aarch64_float_mls_nv4sf (__a, __b, __c);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)\n+vmlsq_n_s16 (int16x8_t __a, int16x8_t __b, int16_t __c)\n {\n- return __builtin_aarch64_smlal_hiv8hi (__a, __b, __c);\n+ return __builtin_aarch64_mls_nv8hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)\n+vmlsq_n_s32 (int32x4_t __a, int32x4_t __b, int32_t __c)\n {\n- return __builtin_aarch64_smlal_hiv4si (__a, __b, __c);\n+ return __builtin_aarch64_mls_nv4si (__a, __b, __c);\n }\n \n __extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_high_u8 (uint16x8_t __a, uint8x16_t __b, uint8x16_t __c)\n+vmlsq_n_u16 (uint16x8_t __a, uint16x8_t __b, uint16_t __c)\n {\n- return __builtin_aarch64_umlal_hiv16qi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_mls_nv8hi_uuuu (__a, __b, __c);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_high_u16 (uint32x4_t __a, uint16x8_t __b, uint16x8_t __c)\n-{\n- return __builtin_aarch64_umlal_hiv8hi_uuuu (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline uint64x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_high_u32 (uint64x2_t __a, uint32x4_t __b, uint32x4_t __c)\n+vmlsq_n_u32 (uint32x4_t __a, uint32x4_t __b, uint32_t __c)\n {\n- return __builtin_aarch64_umlal_hiv4si_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_mls_nv4si_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline int8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_lane_s16 (int32x4_t __acc, int16x4_t __a, int16x4_t __b, const int __c)\n+vmlsq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)\n {\n- return __builtin_aarch64_vec_smlal_lane_v4hi (__acc, __a, __b, __c);\n+ return __builtin_aarch64_mlsv16qi (__a, __b, __c);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_lane_s32 (int64x2_t __acc, int32x2_t __a, int32x2_t __b, const int __c)\n+vmlsq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)\n {\n- return __builtin_aarch64_vec_smlal_lane_v2si (__acc, __a, __b, __c);\n+ return __builtin_aarch64_mlsv8hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_lane_u16 (uint32x4_t __acc, uint16x4_t __a, uint16x4_t __b, const int __c)\n+vmlsq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)\n {\n- return __builtin_aarch64_vec_umlal_lane_v4hi_uuuus (__acc, __a, __b, __c);\n+ return __builtin_aarch64_mlsv4si (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_lane_u32 (uint64x2_t __acc, uint32x2_t __a, uint32x2_t __b, const int __c)\n+vmlsq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)\n {\n- return __builtin_aarch64_vec_umlal_lane_v2si_uuuus (__acc, __a, __b, __c);\n+ return __builtin_aarch64_mlsv16qi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_laneq_s16 (int32x4_t __acc, int16x4_t __a, int16x8_t __b, const int __c)\n+vmlsq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)\n {\n- return __builtin_aarch64_vec_smlal_laneq_v4hi (__acc, __a, __b, __c);\n+ return __builtin_aarch64_mlsv8hi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_laneq_s32 (int64x2_t __acc, int32x2_t __a, int32x4_t __b, const int __c)\n+vmlsq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)\n {\n- return __builtin_aarch64_vec_smlal_laneq_v2si (__acc, __a, __b, __c);\n+ return __builtin_aarch64_mlsv4si_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_laneq_u16 (uint32x4_t __acc, uint16x4_t __a, uint16x8_t __b, const int __c)\n+vmovl_high_s8 (int8x16_t __a)\n {\n- return __builtin_aarch64_vec_umlal_laneq_v4hi_uuuus (__acc, __a, __b, __c);\n+ return __builtin_aarch64_vec_unpacks_hi_v16qi (__a);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_laneq_u32 (uint64x2_t __acc, uint32x2_t __a, uint32x4_t __b, const int __c)\n+vmovl_high_s16 (int16x8_t __a)\n {\n- return __builtin_aarch64_vec_umlal_laneq_v2si_uuuus (__acc, __a, __b, __c);\n+ return __builtin_aarch64_vec_unpacks_hi_v8hi (__a);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)\n+vmovl_high_s32 (int32x4_t __a)\n {\n- return __builtin_aarch64_smlal_nv4hi (__a, __b, __c);\n+ return __builtin_aarch64_vec_unpacks_hi_v4si (__a);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)\n+vmovl_high_u8 (uint8x16_t __a)\n {\n- return __builtin_aarch64_smlal_nv2si (__a, __b, __c);\n+ return __builtin_aarch64_vec_unpacku_hi_v16qi_uu (__a);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_n_u16 (uint32x4_t __a, uint16x4_t __b, uint16_t __c)\n+vmovl_high_u16 (uint16x8_t __a)\n {\n- return __builtin_aarch64_umlal_nv4hi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_vec_unpacku_hi_v8hi_uu (__a);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_n_u32 (uint64x2_t __a, uint32x2_t __b, uint32_t __c)\n+vmovl_high_u32 (uint32x4_t __a)\n {\n- return __builtin_aarch64_umlal_nv2si_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_vec_unpacku_hi_v4si_uu (__a);\n }\n \n __extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c)\n+vmovl_s8 (int8x8_t __a)\n {\n- return __builtin_aarch64_smlalv8qi (__a, __b, __c);\n+ return __builtin_aarch64_sxtlv8hi (__a);\n }\n \n __extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)\n+vmovl_s16 (int16x4_t __a)\n {\n- return __builtin_aarch64_smlalv4hi (__a, __b, __c);\n+ return __builtin_aarch64_sxtlv4si (__a);\n }\n \n __extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)\n+vmovl_s32 (int32x2_t __a)\n {\n- return __builtin_aarch64_smlalv2si (__a, __b, __c);\n+ return __builtin_aarch64_sxtlv2di (__a);\n }\n \n __extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c)\n+vmovl_u8 (uint8x8_t __a)\n {\n- return __builtin_aarch64_umlalv8qi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_uxtlv8hi_uu (__a);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c)\n+vmovl_u16 (uint16x4_t __a)\n {\n- return __builtin_aarch64_umlalv4hi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_uxtlv4si_uu (__a);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlal_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c)\n+vmovl_u32 (uint32x2_t __a)\n {\n- return __builtin_aarch64_umlalv2si_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_uxtlv2di_uu (__a);\n }\n \n-__extension__ extern __inline float32x4_t\n+__extension__ extern __inline int8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlaq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c)\n+vmovn_high_s16 (int8x8_t __a, int16x8_t __b)\n {\n- return __builtin_aarch64_float_mla_nv4sf (__a, __b, __c);\n+ return __builtin_aarch64_xtn2v8hi (__a, __b);\n }\n \n __extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlaq_n_s16 (int16x8_t __a, int16x8_t __b, int16_t __c)\n+vmovn_high_s32 (int16x4_t __a, int32x4_t __b)\n {\n- return __builtin_aarch64_mla_nv8hi (__a, __b, __c);\n+ return __builtin_aarch64_xtn2v4si (__a, __b);\n }\n \n __extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlaq_n_s32 (int32x4_t __a, int32x4_t __b, int32_t __c)\n+vmovn_high_s64 (int32x2_t __a, int64x2_t __b)\n {\n- return __builtin_aarch64_mla_nv4si (__a, __b, __c);\n+ return __builtin_aarch64_xtn2v2di (__a, __b);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlaq_n_u16 (uint16x8_t __a, uint16x8_t __b, uint16_t __c)\n+vmovn_high_u16 (uint8x8_t __a, uint16x8_t __b)\n {\n- return __builtin_aarch64_mla_nv8hi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_xtn2v8hi_uuu (__a, __b);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlaq_n_u32 (uint32x4_t __a, uint32x4_t __b, uint32_t __c)\n+vmovn_high_u32 (uint16x4_t __a, uint32x4_t __b)\n {\n- return __builtin_aarch64_mla_nv4si_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_xtn2v4si_uuu (__a, __b);\n }\n \n-__extension__ extern __inline int8x16_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlaq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)\n+vmovn_high_u64 (uint32x2_t __a, uint64x2_t __b)\n {\n- return __builtin_aarch64_mlav16qi (__a, __b, __c);\n+ return __builtin_aarch64_xtn2v2di_uuu (__a, __b);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline int8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlaq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)\n+vmovn_s16 (int16x8_t __a)\n {\n- return __builtin_aarch64_mlav8hi (__a, __b, __c);\n+ return __builtin_aarch64_xtnv8hi (__a);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlaq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)\n+vmovn_s32 (int32x4_t __a)\n {\n- return __builtin_aarch64_mlav4si (__a, __b, __c);\n+ return __builtin_aarch64_xtnv4si (__a);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlaq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)\n+vmovn_s64 (int64x2_t __a)\n {\n- return __builtin_aarch64_mlav16qi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_xtnv2di (__a);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlaq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)\n+vmovn_u16 (uint16x8_t __a)\n {\n- return __builtin_aarch64_mlav8hi_uuuu (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline uint32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlaq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)\n-{\n- return __builtin_aarch64_mlav4si_uuuu (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline float32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmls_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c)\n-{\n- return __builtin_aarch64_float_mls_nv2sf (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmls_n_s16 (int16x4_t __a, int16x4_t __b, int16_t __c)\n-{\n- return __builtin_aarch64_mls_nv4hi (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmls_n_s32 (int32x2_t __a, int32x2_t __b, int32_t __c)\n-{\n- return __builtin_aarch64_mls_nv2si (__a, __b, __c);\n+ return __builtin_aarch64_xtnv8hi_uu (__a);\n }\n \n __extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmls_n_u16 (uint16x4_t __a, uint16x4_t __b, uint16_t __c)\n+vmovn_u32 (uint32x4_t __a)\n {\n- return __builtin_aarch64_mls_nv4hi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_xtnv4si_uu (__a);\n }\n \n __extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmls_n_u32 (uint32x2_t __a, uint32x2_t __b, uint32_t __c)\n+vmovn_u64 (uint64x2_t __a)\n {\n- return __builtin_aarch64_mls_nv2si_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_xtnv2di_uu (__a);\n }\n \n __extension__ extern __inline int8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmls_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)\n+vshrn_n_s16 (int16x8_t __a, const int __b)\n {\n- return __builtin_aarch64_mlsv8qi (__a, __b, __c);\n+ return __builtin_aarch64_shrn_nv8hi (__a, __b);\n }\n \n __extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmls_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)\n+vshrn_n_s32 (int32x4_t __a, const int __b)\n {\n- return __builtin_aarch64_mlsv4hi (__a, __b, __c);\n+ return __builtin_aarch64_shrn_nv4si (__a, __b);\n }\n \n __extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmls_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)\n+vshrn_n_s64 (int64x2_t __a, const int __b)\n {\n- return __builtin_aarch64_mlsv2si (__a, __b, __c);\n+ return __builtin_aarch64_shrn_nv2di (__a, __b);\n }\n \n __extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmls_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)\n+vshrn_n_u16 (uint16x8_t __a, const int __b)\n {\n- return __builtin_aarch64_mlsv8qi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_shrn_nv8hi_uus (__a, __b);\n }\n \n __extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmls_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)\n+vshrn_n_u32 (uint32x4_t __a, const int __b)\n {\n- return __builtin_aarch64_mlsv4hi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_shrn_nv4si_uus (__a, __b);\n }\n \n __extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmls_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)\n+vshrn_n_u64 (uint64x2_t __a, const int __b)\n {\n- return __builtin_aarch64_mlsv2si_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_shrn_nv2di_uus (__a, __b);\n }\n \n __extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_high_lane_s16(int32x4_t __a, int16x8_t __b, int16x4_t __v,\n-\t\t const int __lane)\n+vmull_high_lane_s16 (int16x8_t __a, int16x4_t __v, const int __lane)\n {\n- return __builtin_aarch64_smlsl_hi_lanev8hi (__a, __b, __v, __lane);\n+ return __builtin_aarch64_smull_hi_lanev8hi (__a, __v, __lane);\n }\n \n __extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_high_lane_s32(int64x2_t __a, int32x4_t __b, int32x2_t __v,\n-\t\t const int __lane)\n+vmull_high_lane_s32 (int32x4_t __a, int32x2_t __v, const int __lane)\n {\n- return __builtin_aarch64_smlsl_hi_lanev4si (__a, __b, __v, __lane);\n+ return __builtin_aarch64_smull_hi_lanev4si (__a, __v, __lane);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_high_lane_u16(uint32x4_t __a, uint16x8_t __b, uint16x4_t __v,\n-\t\t const int __lane)\n+vmull_high_lane_u16 (uint16x8_t __a, uint16x4_t __v, const int __lane)\n {\n- return __builtin_aarch64_umlsl_hi_lanev8hi_uuuus (__a, __b, __v, __lane);\n+ return __builtin_aarch64_umull_hi_lanev8hi_uuus (__a, __v, __lane);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_high_lane_u32(uint64x2_t __a, uint32x4_t __b, uint32x2_t __v,\n-\t\t const int __lane)\n+vmull_high_lane_u32 (uint32x4_t __a, uint32x2_t __v, const int __lane)\n {\n- return __builtin_aarch64_umlsl_hi_lanev4si_uuuus (__a, __b, __v, __lane);\n+ return __builtin_aarch64_umull_hi_lanev4si_uuus (__a, __v, __lane);\n }\n \n __extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_high_laneq_s16(int32x4_t __a, int16x8_t __b, int16x8_t __v,\n-\t\t const int __lane)\n+vmull_high_laneq_s16 (int16x8_t __a, int16x8_t __v, const int __lane)\n {\n- return __builtin_aarch64_smlsl_hi_laneqv8hi (__a, __b, __v, __lane);\n+ return __builtin_aarch64_smull_hi_laneqv8hi (__a, __v, __lane);\n }\n \n __extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_high_laneq_s32(int64x2_t __a, int32x4_t __b, int32x4_t __v,\n-\t\t const int __lane)\n+vmull_high_laneq_s32 (int32x4_t __a, int32x4_t __v, const int __lane)\n {\n- return __builtin_aarch64_smlsl_hi_laneqv4si (__a, __b, __v, __lane);\n+ return __builtin_aarch64_smull_hi_laneqv4si (__a, __v, __lane);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_high_laneq_u16(uint32x4_t __a, uint16x8_t __b, uint16x8_t __v,\n-\t\t const int __lane)\n+vmull_high_laneq_u16 (uint16x8_t __a, uint16x8_t __v, const int __lane)\n {\n- return __builtin_aarch64_umlsl_hi_laneqv8hi_uuuus (__a, __b, __v, __lane);\n+ return __builtin_aarch64_umull_hi_laneqv8hi_uuus (__a, __v, __lane);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_high_laneq_u32(uint64x2_t __a, uint32x4_t __b, uint32x4_t __v,\n-\t\t const int __lane)\n+vmull_high_laneq_u32 (uint32x4_t __a, uint32x4_t __v, const int __lane)\n {\n- return __builtin_aarch64_umlsl_hi_laneqv4si_uuuus (__a, __b, __v, __lane);\n+ return __builtin_aarch64_umull_hi_laneqv4si_uuus (__a, __v, __lane);\n }\n \n __extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c)\n+vmull_high_n_s16 (int16x8_t __a, int16_t __b)\n {\n- return __builtin_aarch64_smlsl_hi_nv8hi (__a, __b, __c);\n+ return __builtin_aarch64_smull_hi_nv8hi (__a, __b);\n }\n \n __extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c)\n+vmull_high_n_s32 (int32x4_t __a, int32_t __b)\n {\n- return __builtin_aarch64_smlsl_hi_nv4si (__a, __b, __c);\n+ return __builtin_aarch64_smull_hi_nv4si (__a, __b);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_high_n_u16 (uint32x4_t __a, uint16x8_t __b, uint16_t __c)\n+vmull_high_n_u16 (uint16x8_t __a, uint16_t __b)\n {\n- return __builtin_aarch64_umlsl_hi_nv8hi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_umull_hi_nv8hi_uuu (__a, __b);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_high_n_u32 (uint64x2_t __a, uint32x4_t __b, uint32_t __c)\n+vmull_high_n_u32 (uint32x4_t __a, uint32_t __b)\n {\n- return __builtin_aarch64_umlsl_hi_nv4si_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_umull_hi_nv4si_uuu (__a, __b);\n+}\n+\n+__extension__ extern __inline poly16x8_t\n+__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n+vmull_high_p8 (poly8x16_t __a, poly8x16_t __b)\n+{\n+ return __builtin_aarch64_pmull_hiv16qi_ppp (__a, __b);\n }\n \n __extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_high_s8 (int16x8_t __a, int8x16_t __b, int8x16_t __c)\n+vmull_high_s8 (int8x16_t __a, int8x16_t __b)\n {\n- return __builtin_aarch64_smlsl_hiv16qi (__a, __b, __c);\n+ return __builtin_aarch64_vec_widen_smult_hi_v16qi (__a, __b);\n }\n \n __extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)\n+vmull_high_s16 (int16x8_t __a, int16x8_t __b)\n {\n- return __builtin_aarch64_smlsl_hiv8hi (__a, __b, __c);\n+ return __builtin_aarch64_vec_widen_smult_hi_v8hi (__a, __b);\n }\n \n __extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)\n+vmull_high_s32 (int32x4_t __a, int32x4_t __b)\n {\n- return __builtin_aarch64_smlsl_hiv4si (__a, __b, __c);\n+ return __builtin_aarch64_vec_widen_smult_hi_v4si (__a, __b);\n }\n \n __extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_high_u8 (uint16x8_t __a, uint8x16_t __b, uint8x16_t __c)\n+vmull_high_u8 (uint8x16_t __a, uint8x16_t __b)\n {\n- return __builtin_aarch64_umlsl_hiv16qi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_vec_widen_umult_hi_v16qi_uuu (__a, __b);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_high_u16 (uint32x4_t __a, uint16x8_t __b, uint16x8_t __c)\n+vmull_high_u16 (uint16x8_t __a, uint16x8_t __b)\n {\n- return __builtin_aarch64_umlsl_hiv8hi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_vec_widen_umult_hi_v8hi_uuu (__a, __b);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_high_u32 (uint64x2_t __a, uint32x4_t __b, uint32x4_t __c)\n+vmull_high_u32 (uint32x4_t __a, uint32x4_t __b)\n {\n- return __builtin_aarch64_umlsl_hiv4si_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_vec_widen_umult_hi_v4si_uuu (__a, __b);\n }\n \n __extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_lane_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __v, const int __lane)\n+vmull_lane_s16 (int16x4_t __a, int16x4_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_smlsl_lane_v4hi (__a, __b, __v, __lane);\n+ return __builtin_aarch64_vec_smult_lane_v4hi (__a, __b, __c);\n }\n \n __extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __v, const int __lane)\n+vmull_lane_s32 (int32x2_t __a, int32x2_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_smlsl_lane_v2si (__a, __b, __v, __lane);\n+ return __builtin_aarch64_vec_smult_lane_v2si (__a, __b, __c);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_lane_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __v,\n- const int __lane)\n+vmull_lane_u16 (uint16x4_t __a, uint16x4_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_umlsl_lane_v4hi_uuuus (__a, __b, __v, __lane);\n+ return __builtin_aarch64_vec_umult_lane_v4hi_uuus (__a, __b, __c);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_lane_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __v,\n- const int __lane)\n+vmull_lane_u32 (uint32x2_t __a, uint32x2_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_umlsl_lane_v2si_uuuus (__a, __b, __v, __lane);\n+ return __builtin_aarch64_vec_umult_lane_v2si_uuus (__a, __b, __c);\n }\n \n __extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_laneq_s16 (int32x4_t __a, int16x4_t __b, int16x8_t __v, const int __lane)\n+vmull_laneq_s16 (int16x4_t __a, int16x8_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_smlsl_laneq_v4hi (__a, __b, __v, __lane);\n+ return __builtin_aarch64_vec_smult_laneq_v4hi (__a, __b, __c);\n }\n \n __extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_laneq_s32 (int64x2_t __a, int32x2_t __b, int32x4_t __v, const int __lane)\n+vmull_laneq_s32 (int32x2_t __a, int32x4_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_smlsl_laneq_v2si (__a, __b, __v, __lane);\n+ return __builtin_aarch64_vec_smult_laneq_v2si (__a, __b, __c);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_laneq_u16 (uint32x4_t __a, uint16x4_t __b, uint16x8_t __v,\n- const int __lane)\n+vmull_laneq_u16 (uint16x4_t __a, uint16x8_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_umlsl_laneq_v4hi_uuuus (__a, __b, __v, __lane);\n+ return __builtin_aarch64_vec_umult_laneq_v4hi_uuus (__a, __b, __c);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_laneq_u32 (uint64x2_t __a, uint32x2_t __b, uint32x4_t __v,\n- const int __lane)\n+vmull_laneq_u32 (uint32x2_t __a, uint32x4_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_umlsl_laneq_v2si_uuuus (__a, __b, __v, __lane);\n+ return __builtin_aarch64_vec_umult_laneq_v2si_uuus (__a, __b, __c);\n }\n \n __extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)\n+vmull_n_s16 (int16x4_t __a, int16_t __b)\n {\n- return __builtin_aarch64_smlsl_nv4hi (__a, __b, __c);\n+ return __builtin_aarch64_smull_nv4hi (__a, __b);\n }\n \n __extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)\n+vmull_n_s32 (int32x2_t __a, int32_t __b)\n {\n- return __builtin_aarch64_smlsl_nv2si (__a, __b, __c);\n+ return __builtin_aarch64_smull_nv2si (__a, __b);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_n_u16 (uint32x4_t __a, uint16x4_t __b, uint16_t __c)\n+vmull_n_u16 (uint16x4_t __a, uint16_t __b)\n {\n- return __builtin_aarch64_umlsl_nv4hi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_umull_nv4hi_uuu (__a, __b);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_n_u32 (uint64x2_t __a, uint32x2_t __b, uint32_t __c)\n+vmull_n_u32 (uint32x2_t __a, uint32_t __b)\n {\n- return __builtin_aarch64_umlsl_nv2si_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_umull_nv2si_uuu (__a, __b);\n+}\n+\n+__extension__ extern __inline poly16x8_t\n+__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n+vmull_p8 (poly8x8_t __a, poly8x8_t __b)\n+{\n+ return __builtin_aarch64_pmullv8qi_ppp (__a, __b);\n }\n \n __extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c)\n+vmull_s8 (int8x8_t __a, int8x8_t __b)\n {\n- return __builtin_aarch64_smlslv8qi (__a, __b, __c);\n+ return __builtin_aarch64_intrinsic_vec_smult_lo_v8qi (__a, __b);\n }\n \n __extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)\n+vmull_s16 (int16x4_t __a, int16x4_t __b)\n {\n- return __builtin_aarch64_smlslv4hi (__a, __b, __c);\n+ return __builtin_aarch64_intrinsic_vec_smult_lo_v4hi (__a, __b);\n }\n \n __extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)\n+vmull_s32 (int32x2_t __a, int32x2_t __b)\n {\n- return __builtin_aarch64_smlslv2si (__a, __b, __c);\n+ return __builtin_aarch64_intrinsic_vec_smult_lo_v2si (__a, __b);\n }\n \n __extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c)\n+vmull_u8 (uint8x8_t __a, uint8x8_t __b)\n {\n- return __builtin_aarch64_umlslv8qi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_intrinsic_vec_umult_lo_v8qi_uuu (__a, __b);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c)\n+vmull_u16 (uint16x4_t __a, uint16x4_t __b)\n {\n- return __builtin_aarch64_umlslv4hi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_intrinsic_vec_umult_lo_v4hi_uuu (__a, __b);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsl_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c)\n+vmull_u32 (uint32x2_t __a, uint32x2_t __b)\n {\n- return __builtin_aarch64_umlslv2si_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_intrinsic_vec_umult_lo_v2si_uuu (__a, __b);\n }\n \n-__extension__ extern __inline float32x4_t\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c)\n+vpadal_s8 (int16x4_t __a, int8x8_t __b)\n {\n- return __builtin_aarch64_float_mls_nv4sf (__a, __b, __c);\n+ return __builtin_aarch64_sadalpv8qi (__a, __b);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsq_n_s16 (int16x8_t __a, int16x8_t __b, int16_t __c)\n+vpadal_s16 (int32x2_t __a, int16x4_t __b)\n {\n- return __builtin_aarch64_mls_nv8hi (__a, __b, __c);\n+ return __builtin_aarch64_sadalpv4hi (__a, __b);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline int64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsq_n_s32 (int32x4_t __a, int32x4_t __b, int32_t __c)\n+vpadal_s32 (int64x1_t __a, int32x2_t __b)\n {\n- return __builtin_aarch64_mls_nv4si (__a, __b, __c);\n+ return (int64x1_t) __builtin_aarch64_sadalpv2si (__a[0], __b);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsq_n_u16 (uint16x8_t __a, uint16x8_t __b, uint16_t __c)\n+vpadal_u8 (uint16x4_t __a, uint8x8_t __b)\n {\n- return __builtin_aarch64_mls_nv8hi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_uadalpv8qi_uuu (__a, __b);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsq_n_u32 (uint32x4_t __a, uint32x4_t __b, uint32_t __c)\n+vpadal_u16 (uint32x2_t __a, uint16x4_t __b)\n {\n- return __builtin_aarch64_mls_nv4si_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_uadalpv4hi_uuu (__a, __b);\n }\n \n-__extension__ extern __inline int8x16_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)\n+vpadal_u32 (uint64x1_t __a, uint32x2_t __b)\n {\n- return __builtin_aarch64_mlsv16qi (__a, __b, __c);\n+ return (uint64x1_t) __builtin_aarch64_uadalpv2si_uuu (__a[0], __b);\n }\n \n __extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)\n+vpadalq_s8 (int16x8_t __a, int8x16_t __b)\n {\n- return __builtin_aarch64_mlsv8hi (__a, __b, __c);\n+ return __builtin_aarch64_sadalpv16qi (__a, __b);\n }\n \n __extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)\n+vpadalq_s16 (int32x4_t __a, int16x8_t __b)\n {\n- return __builtin_aarch64_mlsv4si (__a, __b, __c);\n+ return __builtin_aarch64_sadalpv8hi (__a, __b);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)\n+vpadalq_s32 (int64x2_t __a, int32x4_t __b)\n {\n- return __builtin_aarch64_mlsv16qi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_sadalpv4si (__a, __b);\n }\n \n __extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)\n+vpadalq_u8 (uint16x8_t __a, uint8x16_t __b)\n {\n- return __builtin_aarch64_mlsv8hi_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_uadalpv16qi_uuu (__a, __b);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmlsq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)\n+vpadalq_u16 (uint32x4_t __a, uint16x8_t __b)\n {\n- return __builtin_aarch64_mlsv4si_uuuu (__a, __b, __c);\n+ return __builtin_aarch64_uadalpv8hi_uuu (__a, __b);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovl_high_s8 (int8x16_t __a)\n+vpadalq_u32 (uint64x2_t __a, uint32x4_t __b)\n {\n- return __builtin_aarch64_vec_unpacks_hi_v16qi (__a);\n+ return __builtin_aarch64_uadalpv4si_uuu (__a, __b);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovl_high_s16 (int16x8_t __a)\n+vpaddl_s8 (int8x8_t __a)\n {\n- return __builtin_aarch64_vec_unpacks_hi_v8hi (__a);\n+ return __builtin_aarch64_saddlpv8qi (__a);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovl_high_s32 (int32x4_t __a)\n+vpaddl_s16 (int16x4_t __a)\n {\n- return __builtin_aarch64_vec_unpacks_hi_v4si (__a);\n+ return __builtin_aarch64_saddlpv4hi (__a);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline int64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovl_high_u8 (uint8x16_t __a)\n+vpaddl_s32 (int32x2_t __a)\n {\n- return __builtin_aarch64_vec_unpacku_hi_v16qi_uu (__a);\n+ return (int64x1_t) __builtin_aarch64_saddlpv2si (__a);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovl_high_u16 (uint16x8_t __a)\n+vpaddl_u8 (uint8x8_t __a)\n {\n- return __builtin_aarch64_vec_unpacku_hi_v8hi_uu (__a);\n+ return __builtin_aarch64_uaddlpv8qi_uu (__a);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovl_high_u32 (uint32x4_t __a)\n+vpaddl_u16 (uint16x4_t __a)\n {\n- return __builtin_aarch64_vec_unpacku_hi_v4si_uu (__a);\n+ return __builtin_aarch64_uaddlpv4hi_uu (__a);\n+}\n+\n+__extension__ extern __inline uint64x1_t\n+__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n+vpaddl_u32 (uint32x2_t __a)\n+{\n+ return (uint64x1_t) __builtin_aarch64_uaddlpv2si_uu (__a);\n }\n \n __extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovl_s8 (int8x8_t __a)\n+vpaddlq_s8 (int8x16_t __a)\n {\n- return __builtin_aarch64_sxtlv8hi (__a);\n+ return __builtin_aarch64_saddlpv16qi (__a);\n }\n \n __extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovl_s16 (int16x4_t __a)\n+vpaddlq_s16 (int16x8_t __a)\n {\n- return __builtin_aarch64_sxtlv4si (__a);\n+ return __builtin_aarch64_saddlpv8hi (__a);\n }\n \n __extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovl_s32 (int32x2_t __a)\n+vpaddlq_s32 (int32x4_t __a)\n {\n- return __builtin_aarch64_sxtlv2di (__a);\n+ return __builtin_aarch64_saddlpv4si (__a);\n }\n \n __extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovl_u8 (uint8x8_t __a)\n+vpaddlq_u8 (uint8x16_t __a)\n {\n- return __builtin_aarch64_uxtlv8hi_uu (__a);\n+ return __builtin_aarch64_uaddlpv16qi_uu (__a);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovl_u16 (uint16x4_t __a)\n+vpaddlq_u16 (uint16x8_t __a)\n {\n- return __builtin_aarch64_uxtlv4si_uu (__a);\n+ return __builtin_aarch64_uaddlpv8hi_uu (__a);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovl_u32 (uint32x2_t __a)\n+vpaddlq_u32 (uint32x4_t __a)\n {\n- return __builtin_aarch64_uxtlv2di_uu (__a);\n+ return __builtin_aarch64_uaddlpv4si_uu (__a);\n }\n \n __extension__ extern __inline int8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovn_high_s16 (int8x8_t __a, int16x8_t __b)\n+vpaddq_s8 (int8x16_t __a, int8x16_t __b)\n {\n- return __builtin_aarch64_xtn2v8hi (__a, __b);\n+ return __builtin_aarch64_addpv16qi (__a, __b);\n }\n \n __extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovn_high_s32 (int16x4_t __a, int32x4_t __b)\n+vpaddq_s16 (int16x8_t __a, int16x8_t __b)\n {\n- return __builtin_aarch64_xtn2v4si (__a, __b);\n+ return __builtin_aarch64_addpv8hi (__a, __b);\n }\n \n __extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovn_high_s64 (int32x2_t __a, int64x2_t __b)\n+vpaddq_s32 (int32x4_t __a, int32x4_t __b)\n {\n- return __builtin_aarch64_xtn2v2di (__a, __b);\n+ return __builtin_aarch64_addpv4si (__a, __b);\n+}\n+\n+__extension__ extern __inline int64x2_t\n+__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n+vpaddq_s64 (int64x2_t __a, int64x2_t __b)\n+{\n+ return __builtin_aarch64_addpv2di (__a, __b);\n }\n \n __extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovn_high_u16 (uint8x8_t __a, uint16x8_t __b)\n+vpaddq_u8 (uint8x16_t __a, uint8x16_t __b)\n {\n- return __builtin_aarch64_xtn2v8hi_uuu (__a, __b);\n+ return __builtin_aarch64_addpv16qi_uuu (__a, __b);\n }\n \n __extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovn_high_u32 (uint16x4_t __a, uint32x4_t __b)\n+vpaddq_u16 (uint16x8_t __a, uint16x8_t __b)\n {\n- return __builtin_aarch64_xtn2v4si_uuu (__a, __b);\n+ return __builtin_aarch64_addpv8hi_uuu (__a, __b);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovn_high_u64 (uint32x2_t __a, uint64x2_t __b)\n+vpaddq_u32 (uint32x4_t __a, uint32x4_t __b)\n {\n- return __builtin_aarch64_xtn2v2di_uuu (__a, __b);\n+ return __builtin_aarch64_addpv4si_uuu (__a, __b);\n }\n \n-__extension__ extern __inline int8x8_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovn_s16 (int16x8_t __a)\n+vpaddq_u64 (uint64x2_t __a, uint64x2_t __b)\n {\n- return __builtin_aarch64_xtnv8hi (__a);\n+ return __builtin_aarch64_addpv2di_uuu (__a, __b);\n }\n \n __extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovn_s32 (int32x4_t __a)\n+vqdmulh_n_s16 (int16x4_t __a, int16_t __b)\n {\n- return __builtin_aarch64_xtnv4si (__a);\n+ return __builtin_aarch64_sqdmulh_nv4hi (__a, __b);\n }\n \n __extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovn_s64 (int64x2_t __a)\n+vqdmulh_n_s32 (int32x2_t __a, int32_t __b)\n {\n- return __builtin_aarch64_xtnv2di (__a);\n+ return __builtin_aarch64_sqdmulh_nv2si (__a, __b);\n }\n \n-__extension__ extern __inline uint8x8_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovn_u16 (uint16x8_t __a)\n+vqdmulhq_n_s16 (int16x8_t __a, int16_t __b)\n {\n- return __builtin_aarch64_xtnv8hi_uu (__a);\n+ return __builtin_aarch64_sqdmulh_nv8hi (__a, __b);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovn_u32 (uint32x4_t __a)\n+vqdmulhq_n_s32 (int32x4_t __a, int32_t __b)\n {\n- return __builtin_aarch64_xtnv4si_uu (__a);\n+ return __builtin_aarch64_sqdmulh_nv4si (__a, __b);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline int8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovn_u64 (uint64x2_t __a)\n+vqmovn_high_s16 (int8x8_t __a, int16x8_t __b)\n {\n- return __builtin_aarch64_xtnv2di_uu (__a);\n+ return __builtin_aarch64_sqxtn2v8hi (__a, __b);\n }\n \n-__extension__ extern __inline int8x8_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vshrn_n_s16 (int16x8_t __a, const int __b)\n+vqmovn_high_s32 (int16x4_t __a, int32x4_t __b)\n {\n- return __builtin_aarch64_shrn_nv8hi (__a, __b);\n+ return __builtin_aarch64_sqxtn2v4si (__a, __b);\n }\n \n-__extension__ extern __inline int16x4_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vshrn_n_s32 (int32x4_t __a, const int __b)\n+vqmovn_high_s64 (int32x2_t __a, int64x2_t __b)\n {\n- return __builtin_aarch64_shrn_nv4si (__a, __b);\n+ return __builtin_aarch64_sqxtn2v2di (__a, __b);\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vshrn_n_s64 (int64x2_t __a, const int __b)\n+vqmovn_high_u16 (uint8x8_t __a, uint16x8_t __b)\n {\n- return __builtin_aarch64_shrn_nv2di (__a, __b);\n+ return __builtin_aarch64_uqxtn2v8hi_uuu (__a, __b);\n }\n \n-__extension__ extern __inline uint8x8_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vshrn_n_u16 (uint16x8_t __a, const int __b)\n+vqmovn_high_u32 (uint16x4_t __a, uint32x4_t __b)\n {\n- return __builtin_aarch64_shrn_nv8hi_uus (__a, __b);\n+ return __builtin_aarch64_uqxtn2v4si_uuu (__a, __b);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vshrn_n_u32 (uint32x4_t __a, const int __b)\n+vqmovn_high_u64 (uint32x2_t __a, uint64x2_t __b)\n {\n- return __builtin_aarch64_shrn_nv4si_uus (__a, __b);\n+ return __builtin_aarch64_uqxtn2v2di_uuu (__a, __b);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vshrn_n_u64 (uint64x2_t __a, const int __b)\n+vqmovun_high_s16 (uint8x8_t __a, int16x8_t __b)\n {\n- return __builtin_aarch64_shrn_nv2di_uus (__a, __b);\n+ return __builtin_aarch64_sqxtun2v8hi_uus (__a, __b);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_high_lane_s16 (int16x8_t __a, int16x4_t __v, const int __lane)\n+vqmovun_high_s32 (uint16x4_t __a, int32x4_t __b)\n {\n- return __builtin_aarch64_smull_hi_lanev8hi (__a, __v, __lane);\n+ return __builtin_aarch64_sqxtun2v4si_uus (__a, __b);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_high_lane_s32 (int32x4_t __a, int32x2_t __v, const int __lane)\n+vqmovun_high_s64 (uint32x2_t __a, int64x2_t __b)\n {\n- return __builtin_aarch64_smull_hi_lanev4si (__a, __v, __lane);\n+ return __builtin_aarch64_sqxtun2v2di_uus (__a, __b);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_high_lane_u16 (uint16x8_t __a, uint16x4_t __v, const int __lane)\n+vqrdmulh_n_s16 (int16x4_t __a, int16_t __b)\n {\n- return __builtin_aarch64_umull_hi_lanev8hi_uuus (__a, __v, __lane);\n+ return __builtin_aarch64_sqrdmulh_nv4hi (__a, __b);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_high_lane_u32 (uint32x4_t __a, uint32x2_t __v, const int __lane)\n+vqrdmulh_n_s32 (int32x2_t __a, int32_t __b)\n {\n- return __builtin_aarch64_umull_hi_lanev4si_uuus (__a, __v, __lane);\n+ return __builtin_aarch64_sqrdmulh_nv2si (__a, __b);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_high_laneq_s16 (int16x8_t __a, int16x8_t __v, const int __lane)\n+vqrdmulhq_n_s16 (int16x8_t __a, int16_t __b)\n {\n- return __builtin_aarch64_smull_hi_laneqv8hi (__a, __v, __lane);\n+ return __builtin_aarch64_sqrdmulh_nv8hi (__a, __b);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_high_laneq_s32 (int32x4_t __a, int32x4_t __v, const int __lane)\n+vqrdmulhq_n_s32 (int32x4_t __a, int32_t __b)\n {\n- return __builtin_aarch64_smull_hi_laneqv4si (__a, __v, __lane);\n+ return __builtin_aarch64_sqrdmulh_nv4si (__a, __b);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_high_laneq_u16 (uint16x8_t __a, uint16x8_t __v, const int __lane)\n+vqrshrn_high_n_s16 (int8x8_t __a, int16x8_t __b, const int __c)\n {\n- return __builtin_aarch64_umull_hi_laneqv8hi_uuus (__a, __v, __lane);\n+ return __builtin_aarch64_sqrshrn2_nv8hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_high_laneq_u32 (uint32x4_t __a, uint32x4_t __v, const int __lane)\n+vqrshrn_high_n_s32 (int16x4_t __a, int32x4_t __b, const int __c)\n {\n- return __builtin_aarch64_umull_hi_laneqv4si_uuus (__a, __v, __lane);\n+ return __builtin_aarch64_sqrshrn2_nv4si (__a, __b, __c);\n }\n \n __extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_high_n_s16 (int16x8_t __a, int16_t __b)\n+vqrshrn_high_n_s64 (int32x2_t __a, int64x2_t __b, const int __c)\n {\n- return __builtin_aarch64_smull_hi_nv8hi (__a, __b);\n+ return __builtin_aarch64_sqrshrn2_nv2di (__a, __b, __c);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_high_n_s32 (int32x4_t __a, int32_t __b)\n+vqrshrn_high_n_u16 (uint8x8_t __a, uint16x8_t __b, const int __c)\n {\n- return __builtin_aarch64_smull_hi_nv4si (__a, __b);\n+ return __builtin_aarch64_uqrshrn2_nv8hi_uuus (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_high_n_u16 (uint16x8_t __a, uint16_t __b)\n+vqrshrn_high_n_u32 (uint16x4_t __a, uint32x4_t __b, const int __c)\n {\n- return __builtin_aarch64_umull_hi_nv8hi_uuu (__a, __b);\n+ return __builtin_aarch64_uqrshrn2_nv4si_uuus (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_high_n_u32 (uint32x4_t __a, uint32_t __b)\n+vqrshrn_high_n_u64 (uint32x2_t __a, uint64x2_t __b, const int __c)\n {\n- return __builtin_aarch64_umull_hi_nv4si_uuu (__a, __b);\n+ return __builtin_aarch64_uqrshrn2_nv2di_uuus (__a, __b, __c);\n }\n \n-__extension__ extern __inline poly16x8_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_high_p8 (poly8x16_t __a, poly8x16_t __b)\n+vqrshrun_high_n_s16 (uint8x8_t __a, int16x8_t __b, const int __c)\n {\n- return __builtin_aarch64_pmull_hiv16qi_ppp (__a, __b);\n+ return __builtin_aarch64_sqrshrun2_nv8hi_uuss (__a, __b, __c);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_high_s8 (int8x16_t __a, int8x16_t __b)\n+vqrshrun_high_n_s32 (uint16x4_t __a, int32x4_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_widen_smult_hi_v16qi (__a, __b);\n+ return __builtin_aarch64_sqrshrun2_nv4si_uuss (__a, __b, __c);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_high_s16 (int16x8_t __a, int16x8_t __b)\n+vqrshrun_high_n_s64 (uint32x2_t __a, int64x2_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_widen_smult_hi_v8hi (__a, __b);\n+ return __builtin_aarch64_sqrshrun2_nv2di_uuss (__a, __b, __c);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline int8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_high_s32 (int32x4_t __a, int32x4_t __b)\n+vqshrn_high_n_s16 (int8x8_t __a, int16x8_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_widen_smult_hi_v4si (__a, __b);\n+ return __builtin_aarch64_sqsshrn2_nv8hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_high_u8 (uint8x16_t __a, uint8x16_t __b)\n+vqshrn_high_n_s32 (int16x4_t __a, int32x4_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_widen_umult_hi_v16qi_uuu (__a, __b);\n+ return __builtin_aarch64_sqsshrn2_nv4si (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_high_u16 (uint16x8_t __a, uint16x8_t __b)\n+vqshrn_high_n_s64 (int32x2_t __a, int64x2_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_widen_umult_hi_v8hi_uuu (__a, __b);\n+ return __builtin_aarch64_sqsshrn2_nv2di (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_high_u32 (uint32x4_t __a, uint32x4_t __b)\n+vqshrn_high_n_u16 (uint8x8_t __a, uint16x8_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_widen_umult_hi_v4si_uuu (__a, __b);\n+ return __builtin_aarch64_uqushrn2_nv8hi_uuus (__a, __b, __c);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_lane_s16 (int16x4_t __a, int16x4_t __b, const int __c)\n+vqshrn_high_n_u32 (uint16x4_t __a, uint32x4_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_smult_lane_v4hi (__a, __b, __c);\n+ return __builtin_aarch64_uqushrn2_nv4si_uuus (__a, __b, __c);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_lane_s32 (int32x2_t __a, int32x2_t __b, const int __c)\n+vqshrn_high_n_u64 (uint32x2_t __a, uint64x2_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_smult_lane_v2si (__a, __b, __c);\n+ return __builtin_aarch64_uqushrn2_nv2di_uuus (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_lane_u16 (uint16x4_t __a, uint16x4_t __b, const int __c)\n+vqshrun_high_n_s16 (uint8x8_t __a, int16x8_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_umult_lane_v4hi_uuus (__a, __b, __c);\n+ return __builtin_aarch64_sqshrun2_nv8hi_uuss (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_lane_u32 (uint32x2_t __a, uint32x2_t __b, const int __c)\n+vqshrun_high_n_s32 (uint16x4_t __a, int32x4_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_umult_lane_v2si_uuus (__a, __b, __c);\n+ return __builtin_aarch64_sqshrun2_nv4si_uuss (__a, __b, __c);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_laneq_s16 (int16x4_t __a, int16x8_t __b, const int __c)\n+vqshrun_high_n_s64 (uint32x2_t __a, int64x2_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_smult_laneq_v4hi (__a, __b, __c);\n+ return __builtin_aarch64_sqshrun2_nv2di_uuss (__a, __b, __c);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline int8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_laneq_s32 (int32x2_t __a, int32x4_t __b, const int __c)\n+vrshrn_high_n_s16 (int8x8_t __a, int16x8_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_smult_laneq_v2si (__a, __b, __c);\n+ return __builtin_aarch64_rshrn2_nv8hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_laneq_u16 (uint16x4_t __a, uint16x8_t __b, const int __c)\n+vrshrn_high_n_s32 (int16x4_t __a, int32x4_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_umult_laneq_v4hi_uuus (__a, __b, __c);\n+ return __builtin_aarch64_rshrn2_nv4si (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_laneq_u32 (uint32x2_t __a, uint32x4_t __b, const int __c)\n+vrshrn_high_n_s64 (int32x2_t __a, int64x2_t __b, const int __c)\n {\n- return __builtin_aarch64_vec_umult_laneq_v2si_uuus (__a, __b, __c);\n+ return __builtin_aarch64_rshrn2_nv2di (__a, __b, __c);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_n_s16 (int16x4_t __a, int16_t __b)\n+vrshrn_high_n_u16 (uint8x8_t __a, uint16x8_t __b, const int __c)\n {\n- return __builtin_aarch64_smull_nv4hi (__a, __b);\n+ return __builtin_aarch64_rshrn2_nv8hi_uuus (__a, __b, __c);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_n_s32 (int32x2_t __a, int32_t __b)\n+vrshrn_high_n_u32 (uint16x4_t __a, uint32x4_t __b, const int __c)\n {\n- return __builtin_aarch64_smull_nv2si (__a, __b);\n+ return __builtin_aarch64_rshrn2_nv4si_uuus (__a, __b, __c);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_n_u16 (uint16x4_t __a, uint16_t __b)\n+vrshrn_high_n_u64 (uint32x2_t __a, uint64x2_t __b, const int __c)\n {\n- return __builtin_aarch64_umull_nv4hi_uuu (__a, __b);\n+ return __builtin_aarch64_rshrn2_nv2di_uuus (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline int8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_n_u32 (uint32x2_t __a, uint32_t __b)\n+vrshrn_n_s16 (int16x8_t __a, const int __b)\n {\n- return __builtin_aarch64_umull_nv2si_uuu (__a, __b);\n+ return __builtin_aarch64_rshrn_nv8hi (__a, __b);\n }\n \n-__extension__ extern __inline poly16x8_t\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_p8 (poly8x8_t __a, poly8x8_t __b)\n+vrshrn_n_s32 (int32x4_t __a, const int __b)\n {\n- return __builtin_aarch64_pmullv8qi_ppp (__a, __b);\n+ return __builtin_aarch64_rshrn_nv4si (__a, __b);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_s8 (int8x8_t __a, int8x8_t __b)\n+vrshrn_n_s64 (int64x2_t __a, const int __b)\n {\n- return __builtin_aarch64_intrinsic_vec_smult_lo_v8qi (__a, __b);\n+ return __builtin_aarch64_rshrn_nv2di (__a, __b);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_s16 (int16x4_t __a, int16x4_t __b)\n+vrshrn_n_u16 (uint16x8_t __a, const int __b)\n {\n- return __builtin_aarch64_intrinsic_vec_smult_lo_v4hi (__a, __b);\n+ return __builtin_aarch64_rshrn_nv8hi_uus (__a, __b);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_s32 (int32x2_t __a, int32x2_t __b)\n+vrshrn_n_u32 (uint32x4_t __a, const int __b)\n {\n- return __builtin_aarch64_intrinsic_vec_smult_lo_v2si (__a, __b);\n+ return __builtin_aarch64_rshrn_nv4si_uus (__a, __b);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_u8 (uint8x8_t __a, uint8x8_t __b)\n+vrshrn_n_u64 (uint64x2_t __a, const int __b)\n {\n- return __builtin_aarch64_intrinsic_vec_umult_lo_v8qi_uuu (__a, __b);\n+ return __builtin_aarch64_rshrn_nv2di_uus (__a, __b);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_u16 (uint16x4_t __a, uint16x4_t __b)\n+vrsqrte_u32 (uint32x2_t __a)\n {\n- return __builtin_aarch64_intrinsic_vec_umult_lo_v4hi_uuu (__a, __b);\n+ return __builtin_aarch64_ursqrtev2si_uu (__a);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_u32 (uint32x2_t __a, uint32x2_t __b)\n+vrsqrteq_u32 (uint32x4_t __a)\n {\n- return __builtin_aarch64_intrinsic_vec_umult_lo_v2si_uuu (__a, __b);\n+ return __builtin_aarch64_ursqrtev4si_uu (__a);\n }\n \n-__extension__ extern __inline int16x4_t\n+__extension__ extern __inline int8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpadal_s8 (int16x4_t __a, int8x8_t __b)\n+vshrn_high_n_s16 (int8x8_t __a, int16x8_t __b, const int __c)\n {\n- return __builtin_aarch64_sadalpv8qi (__a, __b);\n+ return __builtin_aarch64_ushrn2_nv8hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpadal_s16 (int32x2_t __a, int16x4_t __b)\n+vshrn_high_n_s32 (int16x4_t __a, int32x4_t __b, const int __c)\n {\n- return __builtin_aarch64_sadalpv4hi (__a, __b);\n+ return __builtin_aarch64_ushrn2_nv4si (__a, __b, __c);\n }\n \n-__extension__ extern __inline int64x1_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpadal_s32 (int64x1_t __a, int32x2_t __b)\n+vshrn_high_n_s64 (int32x2_t __a, int64x2_t __b, const int __c)\n {\n- return (int64x1_t) __builtin_aarch64_sadalpv2si (__a[0], __b);\n+ return __builtin_aarch64_ushrn2_nv2di (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpadal_u8 (uint16x4_t __a, uint8x8_t __b)\n+vshrn_high_n_u16 (uint8x8_t __a, uint16x8_t __b, const int __c)\n {\n- return __builtin_aarch64_uadalpv8qi_uuu (__a, __b);\n+ return __builtin_aarch64_ushrn2_nv8hi_uuus (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpadal_u16 (uint32x2_t __a, uint16x4_t __b)\n+vshrn_high_n_u32 (uint16x4_t __a, uint32x4_t __b, const int __c)\n {\n- return __builtin_aarch64_uadalpv4hi_uuu (__a, __b);\n+ return __builtin_aarch64_ushrn2_nv4si_uuus (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpadal_u32 (uint64x1_t __a, uint32x2_t __b)\n+vshrn_high_n_u64 (uint32x2_t __a, uint64x2_t __b, const int __c)\n {\n- return (uint64x1_t) __builtin_aarch64_uadalpv2si_uuu (__a[0], __b);\n+ return __builtin_aarch64_ushrn2_nv2di_uuus (__a, __b, __c);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline poly8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpadalq_s8 (int16x8_t __a, int8x16_t __b)\n+vsli_n_p8 (poly8x8_t __a, poly8x8_t __b, const int __c)\n {\n- return __builtin_aarch64_sadalpv16qi (__a, __b);\n+ return __builtin_aarch64_ssli_nv8qi_ppps (__a, __b, __c);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline poly16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpadalq_s16 (int32x4_t __a, int16x8_t __b)\n+vsli_n_p16 (poly16x4_t __a, poly16x4_t __b, const int __c)\n {\n- return __builtin_aarch64_sadalpv8hi (__a, __b);\n+ return __builtin_aarch64_ssli_nv4hi_ppps (__a, __b, __c);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline poly8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpadalq_s32 (int64x2_t __a, int32x4_t __b)\n+vsliq_n_p8 (poly8x16_t __a, poly8x16_t __b, const int __c)\n {\n- return __builtin_aarch64_sadalpv4si (__a, __b);\n+ return __builtin_aarch64_ssli_nv16qi_ppps (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline poly16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpadalq_u8 (uint16x8_t __a, uint8x16_t __b)\n+vsliq_n_p16 (poly16x8_t __a, poly16x8_t __b, const int __c)\n {\n- return __builtin_aarch64_uadalpv16qi_uuu (__a, __b);\n+ return __builtin_aarch64_ssli_nv8hi_ppps (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline poly8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpadalq_u16 (uint32x4_t __a, uint16x8_t __b)\n+vsri_n_p8 (poly8x8_t __a, poly8x8_t __b, const int __c)\n {\n- return __builtin_aarch64_uadalpv8hi_uuu (__a, __b);\n+ return __builtin_aarch64_ssri_nv8qi_ppps (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline poly16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpadalq_u32 (uint64x2_t __a, uint32x4_t __b)\n+vsri_n_p16 (poly16x4_t __a, poly16x4_t __b, const int __c)\n {\n- return __builtin_aarch64_uadalpv4si_uuu (__a, __b);\n+ return __builtin_aarch64_ssri_nv4hi_ppps (__a, __b, __c);\n }\n \n-__extension__ extern __inline int16x4_t\n+__extension__ extern __inline poly64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpaddl_s8 (int8x8_t __a)\n+vsri_n_p64 (poly64x1_t __a, poly64x1_t __b, const int __c)\n {\n- return __builtin_aarch64_saddlpv8qi (__a);\n+ return (poly64x1_t) __builtin_aarch64_ssri_ndi_ppps (__a[0], __b[0], __c);\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline poly8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpaddl_s16 (int16x4_t __a)\n+vsriq_n_p8 (poly8x16_t __a, poly8x16_t __b, const int __c)\n {\n- return __builtin_aarch64_saddlpv4hi (__a);\n+ return __builtin_aarch64_ssri_nv16qi_ppps (__a, __b, __c);\n }\n \n-__extension__ extern __inline int64x1_t\n+__extension__ extern __inline poly16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpaddl_s32 (int32x2_t __a)\n+vsriq_n_p16 (poly16x8_t __a, poly16x8_t __b, const int __c)\n {\n- return (int64x1_t) __builtin_aarch64_saddlpv2si (__a);\n+ return __builtin_aarch64_ssri_nv8hi_ppps (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline poly64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpaddl_u8 (uint8x8_t __a)\n+vsriq_n_p64 (poly64x2_t __a, poly64x2_t __b, const int __c)\n {\n- return __builtin_aarch64_uaddlpv8qi_uu (__a);\n+ return __builtin_aarch64_ssri_nv2di_ppps (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpaddl_u16 (uint16x4_t __a)\n+vtst_p8 (poly8x8_t __a, poly8x8_t __b)\n {\n- return __builtin_aarch64_uaddlpv4hi_uu (__a);\n+ return (uint8x8_t) ((((uint8x8_t) __a) & ((uint8x8_t) __b))\n+\t\t != 0);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpaddl_u32 (uint32x2_t __a)\n+vtst_p16 (poly16x4_t __a, poly16x4_t __b)\n {\n- return (uint64x1_t) __builtin_aarch64_uaddlpv2si_uu (__a);\n+ return (uint16x4_t) ((((uint16x4_t) __a) & ((uint16x4_t) __b))\n+\t\t != 0);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpaddlq_s8 (int8x16_t __a)\n+vtst_p64 (poly64x1_t __a, poly64x1_t __b)\n {\n- return __builtin_aarch64_saddlpv16qi (__a);\n+ return (uint64x1_t) ((__a & __b) != __AARCH64_INT64_C (0));\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpaddlq_s16 (int16x8_t __a)\n+vtstq_p8 (poly8x16_t __a, poly8x16_t __b)\n {\n- return __builtin_aarch64_saddlpv8hi (__a);\n+ return (uint8x16_t) ((((uint8x16_t) __a) & ((uint8x16_t) __b))\n+\t\t != 0);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpaddlq_s32 (int32x4_t __a)\n+vtstq_p16 (poly16x8_t __a, poly16x8_t __b)\n {\n- return __builtin_aarch64_saddlpv4si (__a);\n+ return (uint16x8_t) ((((uint16x8_t) __a) & ((uint16x8_t) __b))\n+\t\t != 0);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpaddlq_u8 (uint8x16_t __a)\n+vtstq_p64 (poly64x2_t __a, poly64x2_t __b)\n {\n- return __builtin_aarch64_uaddlpv16qi_uu (__a);\n+ return (uint64x2_t) ((((uint64x2_t) __a) & ((uint64x2_t) __b))\n+\t\t != __AARCH64_INT64_C (0));\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpaddlq_u16 (uint16x8_t __a)\n+vst2_lane_f16 (float16_t *__ptr, float16x4x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_uaddlpv8hi_uu (__a);\n+ __builtin_aarch64_st2_lanev4hf ((__builtin_aarch64_simd_hf *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpaddlq_u32 (uint32x4_t __a)\n+vst2_lane_f32 (float32_t *__ptr, float32x2x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_uaddlpv4si_uu (__a);\n+ __builtin_aarch64_st2_lanev2sf ((__builtin_aarch64_simd_sf *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline int8x16_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpaddq_s8 (int8x16_t __a, int8x16_t __b)\n+vst2_lane_f64 (float64_t *__ptr, float64x1x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_addpv16qi (__a, __b);\n+ __builtin_aarch64_st2_lanedf ((__builtin_aarch64_simd_df *) __ptr, __val,\n+\t\t\t\t__lane);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpaddq_s16 (int16x8_t __a, int16x8_t __b)\n+vst2_lane_p8 (poly8_t *__ptr, poly8x8x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_addpv8hi (__a, __b);\n+ __builtin_aarch64_st2_lanev8qi_sps ((__builtin_aarch64_simd_qi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpaddq_s32 (int32x4_t __a, int32x4_t __b)\n+vst2_lane_p16 (poly16_t *__ptr, poly16x4x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_addpv4si (__a, __b);\n+ __builtin_aarch64_st2_lanev4hi_sps ((__builtin_aarch64_simd_hi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpaddq_s64 (int64x2_t __a, int64x2_t __b)\n+vst2_lane_p64 (poly64_t *__ptr, poly64x1x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_addpv2di (__a, __b);\n+ __builtin_aarch64_st2_lanedi_sps ((__builtin_aarch64_simd_di *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpaddq_u8 (uint8x16_t __a, uint8x16_t __b)\n+vst2_lane_s8 (int8_t *__ptr, int8x8x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_addpv16qi_uuu (__a, __b);\n+ __builtin_aarch64_st2_lanev8qi ((__builtin_aarch64_simd_qi *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpaddq_u16 (uint16x8_t __a, uint16x8_t __b)\n+vst2_lane_s16 (int16_t *__ptr, int16x4x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_addpv8hi_uuu (__a, __b);\n+ __builtin_aarch64_st2_lanev4hi ((__builtin_aarch64_simd_hi *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpaddq_u32 (uint32x4_t __a, uint32x4_t __b)\n+vst2_lane_s32 (int32_t *__ptr, int32x2x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_addpv4si_uuu (__a, __b);\n+ __builtin_aarch64_st2_lanev2si ((__builtin_aarch64_simd_si *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vpaddq_u64 (uint64x2_t __a, uint64x2_t __b)\n+vst2_lane_s64 (int64_t *__ptr, int64x1x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_addpv2di_uuu (__a, __b);\n+ __builtin_aarch64_st2_lanedi ((__builtin_aarch64_simd_di *) __ptr, __val,\n+\t\t\t\t__lane);\n }\n \n-__extension__ extern __inline int16x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqdmulh_n_s16 (int16x4_t __a, int16_t __b)\n+vst2_lane_u8 (uint8_t *__ptr, uint8x8x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqdmulh_nv4hi (__a, __b);\n+ __builtin_aarch64_st2_lanev8qi_sus ((__builtin_aarch64_simd_qi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqdmulh_n_s32 (int32x2_t __a, int32_t __b)\n+vst2_lane_u16 (uint16_t *__ptr, uint16x4x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqdmulh_nv2si (__a, __b);\n+ __builtin_aarch64_st2_lanev4hi_sus ((__builtin_aarch64_simd_hi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqdmulhq_n_s16 (int16x8_t __a, int16_t __b)\n+vst2_lane_u32 (uint32_t *__ptr, uint32x2x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqdmulh_nv8hi (__a, __b);\n+ __builtin_aarch64_st2_lanev2si_sus ((__builtin_aarch64_simd_si *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqdmulhq_n_s32 (int32x4_t __a, int32_t __b)\n+vst2_lane_u64 (uint64_t *__ptr, uint64x1x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqdmulh_nv4si (__a, __b);\n+ __builtin_aarch64_st2_lanedi_sus ((__builtin_aarch64_simd_di *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline int8x16_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqmovn_high_s16 (int8x8_t __a, int16x8_t __b)\n+vst2q_lane_f16 (float16_t *__ptr, float16x8x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqxtn2v8hi (__a, __b);\n+ __builtin_aarch64_st2_lanev8hf ((__builtin_aarch64_simd_hf *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqmovn_high_s32 (int16x4_t __a, int32x4_t __b)\n+vst2q_lane_f32 (float32_t *__ptr, float32x4x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqxtn2v4si (__a, __b);\n+ __builtin_aarch64_st2_lanev4sf ((__builtin_aarch64_simd_sf *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqmovn_high_s64 (int32x2_t __a, int64x2_t __b)\n+vst2q_lane_f64 (float64_t *__ptr, float64x2x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqxtn2v2di (__a, __b);\n+ __builtin_aarch64_st2_lanev2df ((__builtin_aarch64_simd_df *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqmovn_high_u16 (uint8x8_t __a, uint16x8_t __b)\n+vst2q_lane_p8 (poly8_t *__ptr, poly8x16x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_uqxtn2v8hi_uuu (__a, __b);\n+ __builtin_aarch64_st2_lanev16qi_sps ((__builtin_aarch64_simd_qi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqmovn_high_u32 (uint16x4_t __a, uint32x4_t __b)\n+vst2q_lane_p16 (poly16_t *__ptr, poly16x8x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_uqxtn2v4si_uuu (__a, __b);\n+ __builtin_aarch64_st2_lanev8hi_sps ((__builtin_aarch64_simd_hi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqmovn_high_u64 (uint32x2_t __a, uint64x2_t __b)\n+vst2q_lane_p64 (poly64_t *__ptr, poly64x2x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_uqxtn2v2di_uuu (__a, __b);\n+ __builtin_aarch64_st2_lanev2di_sps ((__builtin_aarch64_simd_di *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqmovun_high_s16 (uint8x8_t __a, int16x8_t __b)\n+vst2q_lane_s8 (int8_t *__ptr, int8x16x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqxtun2v8hi_uus (__a, __b);\n+ __builtin_aarch64_st2_lanev16qi ((__builtin_aarch64_simd_qi *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqmovun_high_s32 (uint16x4_t __a, int32x4_t __b)\n+vst2q_lane_s16 (int16_t *__ptr, int16x8x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqxtun2v4si_uus (__a, __b);\n+ __builtin_aarch64_st2_lanev8hi ((__builtin_aarch64_simd_hi *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqmovun_high_s64 (uint32x2_t __a, int64x2_t __b)\n+vst2q_lane_s32 (int32_t *__ptr, int32x4x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqxtun2v2di_uus (__a, __b);\n+ __builtin_aarch64_st2_lanev4si ((__builtin_aarch64_simd_si *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline int16x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmulh_n_s16 (int16x4_t __a, int16_t __b)\n+vst2q_lane_s64 (int64_t *__ptr, int64x2x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqrdmulh_nv4hi (__a, __b);\n+ __builtin_aarch64_st2_lanev2di ((__builtin_aarch64_simd_di *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmulh_n_s32 (int32x2_t __a, int32_t __b)\n+vst2q_lane_u8 (uint8_t *__ptr, uint8x16x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqrdmulh_nv2si (__a, __b);\n+ __builtin_aarch64_st2_lanev16qi_sus ((__builtin_aarch64_simd_qi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmulhq_n_s16 (int16x8_t __a, int16_t __b)\n+vst2q_lane_u16 (uint16_t *__ptr, uint16x8x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqrdmulh_nv8hi (__a, __b);\n+ __builtin_aarch64_st2_lanev8hi_sus ((__builtin_aarch64_simd_hi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmulhq_n_s32 (int32x4_t __a, int32_t __b)\n+vst2q_lane_u32 (uint32_t *__ptr, uint32x4x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqrdmulh_nv4si (__a, __b);\n+ __builtin_aarch64_st2_lanev4si_sus ((__builtin_aarch64_simd_si *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline int8x16_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrshrn_high_n_s16 (int8x8_t __a, int16x8_t __b, const int __c)\n+vst2q_lane_u64 (uint64_t *__ptr, uint64x2x2_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqrshrn2_nv8hi (__a, __b, __c);\n+ __builtin_aarch64_st2_lanev2di_sus ((__builtin_aarch64_simd_di *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrshrn_high_n_s32 (int16x4_t __a, int32x4_t __b, const int __c)\n+vst3_lane_f16 (float16_t *__ptr, float16x4x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqrshrn2_nv4si (__a, __b, __c);\n+ __builtin_aarch64_st3_lanev4hf ((__builtin_aarch64_simd_hf *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrshrn_high_n_s64 (int32x2_t __a, int64x2_t __b, const int __c)\n+vst3_lane_f32 (float32_t *__ptr, float32x2x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqrshrn2_nv2di (__a, __b, __c);\n-}\n+ __builtin_aarch64_st3_lanev2sf ((__builtin_aarch64_simd_sf *) __ptr, __val,\n+\t\t\t\t __lane);\n+}\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrshrn_high_n_u16 (uint8x8_t __a, uint16x8_t __b, const int __c)\n+vst3_lane_f64 (float64_t *__ptr, float64x1x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_uqrshrn2_nv8hi_uuus (__a, __b, __c);\n+ __builtin_aarch64_st3_lanedf ((__builtin_aarch64_simd_df *) __ptr, __val,\n+\t\t\t\t__lane);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrshrn_high_n_u32 (uint16x4_t __a, uint32x4_t __b, const int __c)\n+vst3_lane_p8 (poly8_t *__ptr, poly8x8x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_uqrshrn2_nv4si_uuus (__a, __b, __c);\n+ __builtin_aarch64_st3_lanev8qi_sps ((__builtin_aarch64_simd_qi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrshrn_high_n_u64 (uint32x2_t __a, uint64x2_t __b, const int __c)\n+vst3_lane_p16 (poly16_t *__ptr, poly16x4x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_uqrshrn2_nv2di_uuus (__a, __b, __c);\n+ __builtin_aarch64_st3_lanev4hi_sps ((__builtin_aarch64_simd_hi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrshrun_high_n_s16 (uint8x8_t __a, int16x8_t __b, const int __c)\n+vst3_lane_p64 (poly64_t *__ptr, poly64x1x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqrshrun2_nv8hi_uuss (__a, __b, __c);\n+ __builtin_aarch64_st3_lanedi_sps ((__builtin_aarch64_simd_di *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrshrun_high_n_s32 (uint16x4_t __a, int32x4_t __b, const int __c)\n+vst3_lane_s8 (int8_t *__ptr, int8x8x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqrshrun2_nv4si_uuss (__a, __b, __c);\n+ __builtin_aarch64_st3_lanev8qi ((__builtin_aarch64_simd_qi *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrshrun_high_n_s64 (uint32x2_t __a, int64x2_t __b, const int __c)\n+vst3_lane_s16 (int16_t *__ptr, int16x4x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqrshrun2_nv2di_uuss (__a, __b, __c);\n+ __builtin_aarch64_st3_lanev4hi ((__builtin_aarch64_simd_hi *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline int8x16_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqshrn_high_n_s16 (int8x8_t __a, int16x8_t __b, const int __c)\n+vst3_lane_s32 (int32_t *__ptr, int32x2x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqsshrn2_nv8hi (__a, __b, __c);\n+ __builtin_aarch64_st3_lanev2si ((__builtin_aarch64_simd_si *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqshrn_high_n_s32 (int16x4_t __a, int32x4_t __b, const int __c)\n+vst3_lane_s64 (int64_t *__ptr, int64x1x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqsshrn2_nv4si (__a, __b, __c);\n+ __builtin_aarch64_st3_lanedi ((__builtin_aarch64_simd_di *) __ptr, __val,\n+\t\t\t\t__lane);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqshrn_high_n_s64 (int32x2_t __a, int64x2_t __b, const int __c)\n+vst3_lane_u8 (uint8_t *__ptr, uint8x8x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqsshrn2_nv2di (__a, __b, __c);\n+ __builtin_aarch64_st3_lanev8qi_sus ((__builtin_aarch64_simd_qi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqshrn_high_n_u16 (uint8x8_t __a, uint16x8_t __b, const int __c)\n+vst3_lane_u16 (uint16_t *__ptr, uint16x4x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_uqushrn2_nv8hi_uuus (__a, __b, __c);\n+ __builtin_aarch64_st3_lanev4hi_sus ((__builtin_aarch64_simd_hi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqshrn_high_n_u32 (uint16x4_t __a, uint32x4_t __b, const int __c)\n+vst3_lane_u32 (uint32_t *__ptr, uint32x2x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_uqushrn2_nv4si_uuus (__a, __b, __c);\n+ __builtin_aarch64_st3_lanev2si_sus ((__builtin_aarch64_simd_si *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqshrn_high_n_u64 (uint32x2_t __a, uint64x2_t __b, const int __c)\n+vst3_lane_u64 (uint64_t *__ptr, uint64x1x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_uqushrn2_nv2di_uuus (__a, __b, __c);\n+ __builtin_aarch64_st3_lanedi_sus ((__builtin_aarch64_simd_di *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqshrun_high_n_s16 (uint8x8_t __a, int16x8_t __b, const int __c)\n+vst3q_lane_f16 (float16_t *__ptr, float16x8x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqshrun2_nv8hi_uuss (__a, __b, __c);\n+ __builtin_aarch64_st3_lanev8hf ((__builtin_aarch64_simd_hf *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqshrun_high_n_s32 (uint16x4_t __a, int32x4_t __b, const int __c)\n+vst3q_lane_f32 (float32_t *__ptr, float32x4x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqshrun2_nv4si_uuss (__a, __b, __c);\n+ __builtin_aarch64_st3_lanev4sf ((__builtin_aarch64_simd_sf *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqshrun_high_n_s64 (uint32x2_t __a, int64x2_t __b, const int __c)\n+vst3q_lane_f64 (float64_t *__ptr, float64x2x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_sqshrun2_nv2di_uuss (__a, __b, __c);\n+ __builtin_aarch64_st3_lanev2df ((__builtin_aarch64_simd_df *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline int8x16_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vrshrn_high_n_s16 (int8x8_t __a, int16x8_t __b, const int __c)\n+vst3q_lane_p8 (poly8_t *__ptr, poly8x16x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_rshrn2_nv8hi (__a, __b, __c);\n+ __builtin_aarch64_st3_lanev16qi_sps ((__builtin_aarch64_simd_qi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vrshrn_high_n_s32 (int16x4_t __a, int32x4_t __b, const int __c)\n+vst3q_lane_p16 (poly16_t *__ptr, poly16x8x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_rshrn2_nv4si (__a, __b, __c);\n+ __builtin_aarch64_st3_lanev8hi_sps ((__builtin_aarch64_simd_hi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vrshrn_high_n_s64 (int32x2_t __a, int64x2_t __b, const int __c)\n+vst3q_lane_p64 (poly64_t *__ptr, poly64x2x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_rshrn2_nv2di (__a, __b, __c);\n+ __builtin_aarch64_st3_lanev2di_sps ((__builtin_aarch64_simd_di *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vrshrn_high_n_u16 (uint8x8_t __a, uint16x8_t __b, const int __c)\n+vst3q_lane_s8 (int8_t *__ptr, int8x16x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_rshrn2_nv8hi_uuus (__a, __b, __c);\n+ __builtin_aarch64_st3_lanev16qi ((__builtin_aarch64_simd_qi *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vrshrn_high_n_u32 (uint16x4_t __a, uint32x4_t __b, const int __c)\n+vst3q_lane_s16 (int16_t *__ptr, int16x8x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_rshrn2_nv4si_uuus (__a, __b, __c);\n+ __builtin_aarch64_st3_lanev8hi ((__builtin_aarch64_simd_hi *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vrshrn_high_n_u64 (uint32x2_t __a, uint64x2_t __b, const int __c)\n+vst3q_lane_s32 (int32_t *__ptr, int32x4x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_rshrn2_nv2di_uuus (__a, __b, __c);\n+ __builtin_aarch64_st3_lanev4si ((__builtin_aarch64_simd_si *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline int8x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vrshrn_n_s16 (int16x8_t __a, const int __b)\n+vst3q_lane_s64 (int64_t *__ptr, int64x2x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_rshrn_nv8hi (__a, __b);\n+ __builtin_aarch64_st3_lanev2di ((__builtin_aarch64_simd_di *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline int16x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vrshrn_n_s32 (int32x4_t __a, const int __b)\n+vst3q_lane_u8 (uint8_t *__ptr, uint8x16x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_rshrn_nv4si (__a, __b);\n+ __builtin_aarch64_st3_lanev16qi_sus ((__builtin_aarch64_simd_qi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vrshrn_n_s64 (int64x2_t __a, const int __b)\n+vst3q_lane_u16 (uint16_t *__ptr, uint16x8x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_rshrn_nv2di (__a, __b);\n+ __builtin_aarch64_st3_lanev8hi_sus ((__builtin_aarch64_simd_hi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline uint8x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vrshrn_n_u16 (uint16x8_t __a, const int __b)\n+vst3q_lane_u32 (uint32_t *__ptr, uint32x4x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_rshrn_nv8hi_uus (__a, __b);\n+ __builtin_aarch64_st3_lanev4si_sus ((__builtin_aarch64_simd_si *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vrshrn_n_u32 (uint32x4_t __a, const int __b)\n+vst3q_lane_u64 (uint64_t *__ptr, uint64x2x3_t __val, const int __lane)\n {\n- return __builtin_aarch64_rshrn_nv4si_uus (__a, __b);\n+ __builtin_aarch64_st3_lanev2di_sus ((__builtin_aarch64_simd_di *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vrshrn_n_u64 (uint64x2_t __a, const int __b)\n+vst4_lane_f16 (float16_t *__ptr, float16x4x4_t __val, const int __lane)\n {\n- return __builtin_aarch64_rshrn_nv2di_uus (__a, __b);\n+ __builtin_aarch64_st4_lanev4hf ((__builtin_aarch64_simd_hf *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vrsqrte_u32 (uint32x2_t __a)\n+vst4_lane_f32 (float32_t *__ptr, float32x2x4_t __val, const int __lane)\n {\n- return __builtin_aarch64_ursqrtev2si_uu (__a);\n+ __builtin_aarch64_st4_lanev2sf ((__builtin_aarch64_simd_sf *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vrsqrteq_u32 (uint32x4_t __a)\n+vst4_lane_f64 (float64_t *__ptr, float64x1x4_t __val, const int __lane)\n {\n- return __builtin_aarch64_ursqrtev4si_uu (__a);\n+ __builtin_aarch64_st4_lanedf ((__builtin_aarch64_simd_df *) __ptr, __val,\n+\t\t\t\t__lane);\n }\n \n-__extension__ extern __inline int8x16_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vshrn_high_n_s16 (int8x8_t __a, int16x8_t __b, const int __c)\n+vst4_lane_p8 (poly8_t *__ptr, poly8x8x4_t __val, const int __lane)\n {\n- return __builtin_aarch64_ushrn2_nv8hi (__a, __b, __c);\n+ __builtin_aarch64_st4_lanev8qi_sps ((__builtin_aarch64_simd_qi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vshrn_high_n_s32 (int16x4_t __a, int32x4_t __b, const int __c)\n+vst4_lane_p16 (poly16_t *__ptr, poly16x4x4_t __val, const int __lane)\n {\n- return __builtin_aarch64_ushrn2_nv4si (__a, __b, __c);\n+ __builtin_aarch64_st4_lanev4hi_sps ((__builtin_aarch64_simd_hi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vshrn_high_n_s64 (int32x2_t __a, int64x2_t __b, const int __c)\n+vst4_lane_p64 (poly64_t *__ptr, poly64x1x4_t __val, const int __lane)\n {\n- return __builtin_aarch64_ushrn2_nv2di (__a, __b, __c);\n+ __builtin_aarch64_st4_lanedi_sps ((__builtin_aarch64_simd_di *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vshrn_high_n_u16 (uint8x8_t __a, uint16x8_t __b, const int __c)\n+vst4_lane_s8 (int8_t *__ptr, int8x8x4_t __val, const int __lane)\n {\n- return __builtin_aarch64_ushrn2_nv8hi_uuus (__a, __b, __c);\n+ __builtin_aarch64_st4_lanev8qi ((__builtin_aarch64_simd_qi *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vshrn_high_n_u32 (uint16x4_t __a, uint32x4_t __b, const int __c)\n+vst4_lane_s16 (int16_t *__ptr, int16x4x4_t __val, const int __lane)\n {\n- return __builtin_aarch64_ushrn2_nv4si_uuus (__a, __b, __c);\n+ __builtin_aarch64_st4_lanev4hi ((__builtin_aarch64_simd_hi *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vshrn_high_n_u64 (uint32x2_t __a, uint64x2_t __b, const int __c)\n+vst4_lane_s32 (int32_t *__ptr, int32x2x4_t __val, const int __lane)\n {\n- return __builtin_aarch64_ushrn2_nv2di_uuus (__a, __b, __c);\n+ __builtin_aarch64_st4_lanev2si ((__builtin_aarch64_simd_si *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline poly8x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsli_n_p8 (poly8x8_t __a, poly8x8_t __b, const int __c)\n+vst4_lane_s64 (int64_t *__ptr, int64x1x4_t __val, const int __lane)\n {\n- return __builtin_aarch64_ssli_nv8qi_ppps (__a, __b, __c);\n+ __builtin_aarch64_st4_lanedi ((__builtin_aarch64_simd_di *) __ptr, __val,\n+\t\t\t\t__lane);\n }\n \n-__extension__ extern __inline poly16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsli_n_p16 (poly16x4_t __a, poly16x4_t __b, const int __c)\n-{\n- return __builtin_aarch64_ssli_nv4hi_ppps (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline poly8x16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsliq_n_p8 (poly8x16_t __a, poly8x16_t __b, const int __c)\n-{\n- return __builtin_aarch64_ssli_nv16qi_ppps (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline poly16x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsliq_n_p16 (poly16x8_t __a, poly16x8_t __b, const int __c)\n+vst4_lane_u8 (uint8_t *__ptr, uint8x8x4_t __val, const int __lane)\n {\n- return __builtin_aarch64_ssli_nv8hi_ppps (__a, __b, __c);\n+ __builtin_aarch64_st4_lanev8qi_sus ((__builtin_aarch64_simd_qi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline poly8x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsri_n_p8 (poly8x8_t __a, poly8x8_t __b, const int __c)\n+vst4_lane_u16 (uint16_t *__ptr, uint16x4x4_t __val, const int __lane)\n {\n- return __builtin_aarch64_ssri_nv8qi_ppps (__a, __b, __c);\n+ __builtin_aarch64_st4_lanev4hi_sus ((__builtin_aarch64_simd_hi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline poly16x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsri_n_p16 (poly16x4_t __a, poly16x4_t __b, const int __c)\n+vst4_lane_u32 (uint32_t *__ptr, uint32x2x4_t __val, const int __lane)\n {\n- return __builtin_aarch64_ssri_nv4hi_ppps (__a, __b, __c);\n+ __builtin_aarch64_st4_lanev2si_sus ((__builtin_aarch64_simd_si *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline poly64x1_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsri_n_p64 (poly64x1_t __a, poly64x1_t __b, const int __c)\n+vst4_lane_u64 (uint64_t *__ptr, uint64x1x4_t __val, const int __lane)\n {\n- return (poly64x1_t) __builtin_aarch64_ssri_ndi_ppps (__a[0], __b[0], __c);\n+ __builtin_aarch64_st4_lanedi_sus ((__builtin_aarch64_simd_di *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline poly8x16_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsriq_n_p8 (poly8x16_t __a, poly8x16_t __b, const int __c)\n+vst4q_lane_f16 (float16_t *__ptr, float16x8x4_t __val, const int __lane)\n {\n- return __builtin_aarch64_ssri_nv16qi_ppps (__a, __b, __c);\n+ __builtin_aarch64_st4_lanev8hf ((__builtin_aarch64_simd_hf *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline poly16x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsriq_n_p16 (poly16x8_t __a, poly16x8_t __b, const int __c)\n+vst4q_lane_f32 (float32_t *__ptr, float32x4x4_t __val, const int __lane)\n {\n- return __builtin_aarch64_ssri_nv8hi_ppps (__a, __b, __c);\n+ __builtin_aarch64_st4_lanev4sf ((__builtin_aarch64_simd_sf *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline poly64x2_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsriq_n_p64 (poly64x2_t __a, poly64x2_t __b, const int __c)\n+vst4q_lane_f64 (float64_t *__ptr, float64x2x4_t __val, const int __lane)\n {\n- return __builtin_aarch64_ssri_nv2di_ppps (__a, __b, __c);\n+ __builtin_aarch64_st4_lanev2df ((__builtin_aarch64_simd_df *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint8x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vtst_p8 (poly8x8_t __a, poly8x8_t __b)\n+vst4q_lane_p8 (poly8_t *__ptr, poly8x16x4_t __val, const int __lane)\n {\n- return (uint8x8_t) ((((uint8x8_t) __a) & ((uint8x8_t) __b))\n-\t\t != 0);\n+ __builtin_aarch64_st4_lanev16qi_sps ((__builtin_aarch64_simd_qi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vtst_p16 (poly16x4_t __a, poly16x4_t __b)\n+vst4q_lane_p16 (poly16_t *__ptr, poly16x8x4_t __val, const int __lane)\n {\n- return (uint16x4_t) ((((uint16x4_t) __a) & ((uint16x4_t) __b))\n-\t\t != 0);\n+ __builtin_aarch64_st4_lanev8hi_sps ((__builtin_aarch64_simd_hi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vtst_p64 (poly64x1_t __a, poly64x1_t __b)\n+vst4q_lane_p64 (poly64_t *__ptr, poly64x2x4_t __val, const int __lane)\n {\n- return (uint64x1_t) ((__a & __b) != __AARCH64_INT64_C (0));\n+ __builtin_aarch64_st4_lanev2di_sps ((__builtin_aarch64_simd_di *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vtstq_p8 (poly8x16_t __a, poly8x16_t __b)\n+vst4q_lane_s8 (int8_t *__ptr, int8x16x4_t __val, const int __lane)\n {\n- return (uint8x16_t) ((((uint8x16_t) __a) & ((uint8x16_t) __b))\n-\t\t != 0);\n+ __builtin_aarch64_st4_lanev16qi ((__builtin_aarch64_simd_qi *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vtstq_p16 (poly16x8_t __a, poly16x8_t __b)\n+vst4q_lane_s16 (int16_t *__ptr, int16x8x4_t __val, const int __lane)\n {\n- return (uint16x8_t) ((((uint16x8_t) __a) & ((uint16x8_t) __b))\n-\t\t != 0);\n+ __builtin_aarch64_st4_lanev8hi ((__builtin_aarch64_simd_hi *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vtstq_p64 (poly64x2_t __a, poly64x2_t __b)\n+vst4q_lane_s32 (int32_t *__ptr, int32x4x4_t __val, const int __lane)\n {\n- return (uint64x2_t) ((((uint64x2_t) __a) & ((uint64x2_t) __b))\n-\t\t != __AARCH64_INT64_C (0));\n+ __builtin_aarch64_st4_lanev4si ((__builtin_aarch64_simd_si *) __ptr, __val,\n+\t\t\t\t __lane);\n }\n \n __extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2_lane_f16 (float16_t *__ptr, float16x4x2_t __val, const int __lane)\n+vst4q_lane_s64 (int64_t *__ptr, int64x2x4_t __val, const int __lane)\n {\n- __builtin_aarch64_st2_lanev4hf ((__builtin_aarch64_simd_hf *) __ptr, __val,\n+ __builtin_aarch64_st4_lanev2di ((__builtin_aarch64_simd_di *) __ptr, __val,\n \t\t\t\t __lane);\n }\n \n __extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2_lane_f32 (float32_t *__ptr, float32x2x2_t __val, const int __lane)\n+vst4q_lane_u8 (uint8_t *__ptr, uint8x16x4_t __val, const int __lane)\n {\n- __builtin_aarch64_st2_lanev2sf ((__builtin_aarch64_simd_sf *) __ptr, __val,\n-\t\t\t\t __lane);\n+ __builtin_aarch64_st4_lanev16qi_sus ((__builtin_aarch64_simd_qi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n __extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2_lane_f64 (float64_t *__ptr, float64x1x2_t __val, const int __lane)\n+vst4q_lane_u16 (uint16_t *__ptr, uint16x8x4_t __val, const int __lane)\n {\n- __builtin_aarch64_st2_lanedf ((__builtin_aarch64_simd_df *) __ptr, __val,\n-\t\t\t\t__lane);\n+ __builtin_aarch64_st4_lanev8hi_sus ((__builtin_aarch64_simd_hi *) __ptr,\n+\t\t\t\t __val, __lane);\n }\n \n __extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2_lane_p8 (poly8_t *__ptr, poly8x8x2_t __val, const int __lane)\n+vst4q_lane_u32 (uint32_t *__ptr, uint32x4x4_t __val, const int __lane)\n {\n- __builtin_aarch64_st2_lanev8qi_sps ((__builtin_aarch64_simd_qi *) __ptr,\n+ __builtin_aarch64_st4_lanev4si_sus ((__builtin_aarch64_simd_si *) __ptr,\n \t\t\t\t __val, __lane);\n }\n \n __extension__ extern __inline void\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2_lane_p16 (poly16_t *__ptr, poly16x4x2_t __val, const int __lane)\n+vst4q_lane_u64 (uint64_t *__ptr, uint64x2x4_t __val, const int __lane)\n {\n- __builtin_aarch64_st2_lanev4hi_sps ((__builtin_aarch64_simd_hi *) __ptr,\n+ __builtin_aarch64_st4_lanev2di_sus ((__builtin_aarch64_simd_di *) __ptr,\n \t\t\t\t __val, __lane);\n }\n \n-__extension__ extern __inline void\n+__extension__ extern __inline int64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2_lane_p64 (poly64_t *__ptr, poly64x1x2_t __val, const int __lane)\n+vaddlv_s32 (int32x2_t __a)\n {\n- __builtin_aarch64_st2_lanedi_sps ((__builtin_aarch64_simd_di *) __ptr,\n-\t\t\t\t __val, __lane);\n+ return __builtin_aarch64_saddlvv2si (__a);\n }\n \n-__extension__ extern __inline void\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2_lane_s8 (int8_t *__ptr, int8x8x2_t __val, const int __lane)\n+vaddlv_u32 (uint32x2_t __a)\n {\n- __builtin_aarch64_st2_lanev8qi ((__builtin_aarch64_simd_qi *) __ptr, __val,\n-\t\t\t\t __lane);\n+ return __builtin_aarch64_uaddlvv2si_uu (__a);\n }\n \n-__extension__ extern __inline void\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2_lane_s16 (int16_t *__ptr, int16x4x2_t __val, const int __lane)\n+vqdmulh_laneq_s16 (int16x4_t __a, int16x8_t __b, const int __c)\n {\n- __builtin_aarch64_st2_lanev4hi ((__builtin_aarch64_simd_hi *) __ptr, __val,\n-\t\t\t\t __lane);\n+ return __builtin_aarch64_sqdmulh_laneqv4hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline void\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2_lane_s32 (int32_t *__ptr, int32x2x2_t __val, const int __lane)\n+vqdmulh_laneq_s32 (int32x2_t __a, int32x4_t __b, const int __c)\n {\n- __builtin_aarch64_st2_lanev2si ((__builtin_aarch64_simd_si *) __ptr, __val,\n-\t\t\t\t __lane);\n+ return __builtin_aarch64_sqdmulh_laneqv2si (__a, __b, __c);\n }\n \n-__extension__ extern __inline void\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2_lane_s64 (int64_t *__ptr, int64x1x2_t __val, const int __lane)\n+vqdmulhq_laneq_s16 (int16x8_t __a, int16x8_t __b, const int __c)\n {\n- __builtin_aarch64_st2_lanedi ((__builtin_aarch64_simd_di *) __ptr, __val,\n-\t\t\t\t__lane);\n+ return __builtin_aarch64_sqdmulh_laneqv8hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline void\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2_lane_u8 (uint8_t *__ptr, uint8x8x2_t __val, const int __lane)\n+vqdmulhq_laneq_s32 (int32x4_t __a, int32x4_t __b, const int __c)\n {\n- __builtin_aarch64_st2_lanev8qi_sus ((__builtin_aarch64_simd_qi *) __ptr,\n-\t\t\t\t __val, __lane);\n+ return __builtin_aarch64_sqdmulh_laneqv4si (__a, __b, __c);\n }\n \n-__extension__ extern __inline void\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2_lane_u16 (uint16_t *__ptr, uint16x4x2_t __val, const int __lane)\n+vqrdmulh_laneq_s16 (int16x4_t __a, int16x8_t __b, const int __c)\n {\n- __builtin_aarch64_st2_lanev4hi_sus ((__builtin_aarch64_simd_hi *) __ptr,\n-\t\t\t\t __val, __lane);\n+ return __builtin_aarch64_sqrdmulh_laneqv4hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline void\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2_lane_u32 (uint32_t *__ptr, uint32x2x2_t __val, const int __lane)\n+vqrdmulh_laneq_s32 (int32x2_t __a, int32x4_t __b, const int __c)\n {\n- __builtin_aarch64_st2_lanev2si_sus ((__builtin_aarch64_simd_si *) __ptr,\n-\t\t\t\t __val, __lane);\n+ return __builtin_aarch64_sqrdmulh_laneqv2si (__a, __b, __c);\n }\n \n-__extension__ extern __inline void\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2_lane_u64 (uint64_t *__ptr, uint64x1x2_t __val, const int __lane)\n+vqrdmulhq_laneq_s16 (int16x8_t __a, int16x8_t __b, const int __c)\n {\n- __builtin_aarch64_st2_lanedi_sus ((__builtin_aarch64_simd_di *) __ptr, __val,\n-\t\t\t\t __lane);\n+ return __builtin_aarch64_sqrdmulh_laneqv8hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline void\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2q_lane_f16 (float16_t *__ptr, float16x8x2_t __val, const int __lane)\n+vqrdmulhq_laneq_s32 (int32x4_t __a, int32x4_t __b, const int __c)\n {\n- __builtin_aarch64_st2_lanev8hf ((__builtin_aarch64_simd_hf *) __ptr, __val,\n-\t\t\t\t __lane);\n+ return __builtin_aarch64_sqrdmulh_laneqv4si (__a, __b, __c);\n }\n \n-__extension__ extern __inline void\n+/* Table intrinsics. */\n+\n+__extension__ extern __inline poly8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2q_lane_f32 (float32_t *__ptr, float32x4x2_t __val, const int __lane)\n+vqtbl1_p8 (poly8x16_t __tab, uint8x8_t __idx)\n {\n- __builtin_aarch64_st2_lanev4sf ((__builtin_aarch64_simd_sf *) __ptr, __val,\n-\t\t\t\t __lane);\n+ return __builtin_aarch64_qtbl1v8qi_ppu (__tab, __idx);\n }\n \n-__extension__ extern __inline void\n+__extension__ extern __inline int8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2q_lane_f64 (float64_t *__ptr, float64x2x2_t __val, const int __lane)\n+vqtbl1_s8 (int8x16_t __tab, uint8x8_t __idx)\n {\n- __builtin_aarch64_st2_lanev2df ((__builtin_aarch64_simd_df *) __ptr, __val,\n-\t\t\t\t __lane);\n+ return __builtin_aarch64_qtbl1v8qi_ssu (__tab, __idx);\n }\n \n-__extension__ extern __inline void\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2q_lane_p8 (poly8_t *__ptr, poly8x16x2_t __val, const int __lane)\n+vqtbl1_u8 (uint8x16_t __tab, uint8x8_t __idx)\n {\n- __builtin_aarch64_st2_lanev16qi_sps ((__builtin_aarch64_simd_qi *) __ptr,\n-\t\t\t\t __val, __lane);\n+ return __builtin_aarch64_qtbl1v8qi_uuu (__tab, __idx);\n }\n \n-__extension__ extern __inline void\n+__extension__ extern __inline poly8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2q_lane_p16 (poly16_t *__ptr, poly16x8x2_t __val, const int __lane)\n+vqtbl1q_p8 (poly8x16_t __tab, uint8x16_t __idx)\n {\n- __builtin_aarch64_st2_lanev8hi_sps ((__builtin_aarch64_simd_hi *) __ptr,\n-\t\t\t\t __val, __lane);\n+ return __builtin_aarch64_qtbl1v16qi_ppu (__tab, __idx);\n }\n \n-__extension__ extern __inline void\n+__extension__ extern __inline int8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2q_lane_p64 (poly64_t *__ptr, poly64x2x2_t __val, const int __lane)\n+vqtbl1q_s8 (int8x16_t __tab, uint8x16_t __idx)\n {\n- __builtin_aarch64_st2_lanev2di_sps ((__builtin_aarch64_simd_di *) __ptr,\n-\t\t\t\t __val, __lane);\n+ return __builtin_aarch64_qtbl1v16qi_ssu (__tab, __idx);\n }\n \n-__extension__ extern __inline void\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2q_lane_s8 (int8_t *__ptr, int8x16x2_t __val, const int __lane)\n+vqtbl1q_u8 (uint8x16_t __tab, uint8x16_t __idx)\n {\n- __builtin_aarch64_st2_lanev16qi ((__builtin_aarch64_simd_qi *) __ptr, __val,\n-\t\t\t\t __lane);\n+ return __builtin_aarch64_qtbl1v16qi_uuu (__tab, __idx);\n }\n \n-__extension__ extern __inline void\n+__extension__ extern __inline int8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2q_lane_s16 (int16_t *__ptr, int16x8x2_t __val, const int __lane)\n+vqtbx1_s8 (int8x8_t __r, int8x16_t __tab, uint8x8_t __idx)\n {\n- __builtin_aarch64_st2_lanev8hi ((__builtin_aarch64_simd_hi *) __ptr, __val,\n-\t\t\t\t __lane);\n+ return __builtin_aarch64_qtbx1v8qi_sssu (__r, __tab, __idx);\n }\n \n-__extension__ extern __inline void\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2q_lane_s32 (int32_t *__ptr, int32x4x2_t __val, const int __lane)\n-{\n- __builtin_aarch64_st2_lanev4si ((__builtin_aarch64_simd_si *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2q_lane_s64 (int64_t *__ptr, int64x2x2_t __val, const int __lane)\n-{\n- __builtin_aarch64_st2_lanev2di ((__builtin_aarch64_simd_di *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2q_lane_u8 (uint8_t *__ptr, uint8x16x2_t __val, const int __lane)\n-{\n- __builtin_aarch64_st2_lanev16qi_sus ((__builtin_aarch64_simd_qi *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2q_lane_u16 (uint16_t *__ptr, uint16x8x2_t __val, const int __lane)\n-{\n- __builtin_aarch64_st2_lanev8hi_sus ((__builtin_aarch64_simd_hi *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2q_lane_u32 (uint32_t *__ptr, uint32x4x2_t __val, const int __lane)\n-{\n- __builtin_aarch64_st2_lanev4si_sus ((__builtin_aarch64_simd_si *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst2q_lane_u64 (uint64_t *__ptr, uint64x2x2_t __val, const int __lane)\n-{\n- __builtin_aarch64_st2_lanev2di_sus ((__builtin_aarch64_simd_di *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3_lane_f16 (float16_t *__ptr, float16x4x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev4hf ((__builtin_aarch64_simd_hf *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3_lane_f32 (float32_t *__ptr, float32x2x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev2sf ((__builtin_aarch64_simd_sf *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3_lane_f64 (float64_t *__ptr, float64x1x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanedf ((__builtin_aarch64_simd_df *) __ptr, __val,\n-\t\t\t\t__lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3_lane_p8 (poly8_t *__ptr, poly8x8x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev8qi_sps ((__builtin_aarch64_simd_qi *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3_lane_p16 (poly16_t *__ptr, poly16x4x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev4hi_sps ((__builtin_aarch64_simd_hi *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3_lane_p64 (poly64_t *__ptr, poly64x1x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanedi_sps ((__builtin_aarch64_simd_di *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3_lane_s8 (int8_t *__ptr, int8x8x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev8qi ((__builtin_aarch64_simd_qi *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3_lane_s16 (int16_t *__ptr, int16x4x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev4hi ((__builtin_aarch64_simd_hi *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3_lane_s32 (int32_t *__ptr, int32x2x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev2si ((__builtin_aarch64_simd_si *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3_lane_s64 (int64_t *__ptr, int64x1x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanedi ((__builtin_aarch64_simd_di *) __ptr, __val,\n-\t\t\t\t__lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3_lane_u8 (uint8_t *__ptr, uint8x8x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev8qi_sus ((__builtin_aarch64_simd_qi *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3_lane_u16 (uint16_t *__ptr, uint16x4x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev4hi_sus ((__builtin_aarch64_simd_hi *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3_lane_u32 (uint32_t *__ptr, uint32x2x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev2si_sus ((__builtin_aarch64_simd_si *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3_lane_u64 (uint64_t *__ptr, uint64x1x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanedi_sus ((__builtin_aarch64_simd_di *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3q_lane_f16 (float16_t *__ptr, float16x8x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev8hf ((__builtin_aarch64_simd_hf *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3q_lane_f32 (float32_t *__ptr, float32x4x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev4sf ((__builtin_aarch64_simd_sf *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3q_lane_f64 (float64_t *__ptr, float64x2x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev2df ((__builtin_aarch64_simd_df *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3q_lane_p8 (poly8_t *__ptr, poly8x16x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev16qi_sps ((__builtin_aarch64_simd_qi *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3q_lane_p16 (poly16_t *__ptr, poly16x8x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev8hi_sps ((__builtin_aarch64_simd_hi *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3q_lane_p64 (poly64_t *__ptr, poly64x2x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev2di_sps ((__builtin_aarch64_simd_di *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3q_lane_s8 (int8_t *__ptr, int8x16x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev16qi ((__builtin_aarch64_simd_qi *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3q_lane_s16 (int16_t *__ptr, int16x8x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev8hi ((__builtin_aarch64_simd_hi *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3q_lane_s32 (int32_t *__ptr, int32x4x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev4si ((__builtin_aarch64_simd_si *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3q_lane_s64 (int64_t *__ptr, int64x2x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev2di ((__builtin_aarch64_simd_di *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3q_lane_u8 (uint8_t *__ptr, uint8x16x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev16qi_sus ((__builtin_aarch64_simd_qi *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3q_lane_u16 (uint16_t *__ptr, uint16x8x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev8hi_sus ((__builtin_aarch64_simd_hi *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3q_lane_u32 (uint32_t *__ptr, uint32x4x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev4si_sus ((__builtin_aarch64_simd_si *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst3q_lane_u64 (uint64_t *__ptr, uint64x2x3_t __val, const int __lane)\n-{\n- __builtin_aarch64_st3_lanev2di_sus ((__builtin_aarch64_simd_di *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4_lane_f16 (float16_t *__ptr, float16x4x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev4hf ((__builtin_aarch64_simd_hf *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4_lane_f32 (float32_t *__ptr, float32x2x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev2sf ((__builtin_aarch64_simd_sf *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4_lane_f64 (float64_t *__ptr, float64x1x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanedf ((__builtin_aarch64_simd_df *) __ptr, __val,\n-\t\t\t\t__lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4_lane_p8 (poly8_t *__ptr, poly8x8x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev8qi_sps ((__builtin_aarch64_simd_qi *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4_lane_p16 (poly16_t *__ptr, poly16x4x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev4hi_sps ((__builtin_aarch64_simd_hi *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4_lane_p64 (poly64_t *__ptr, poly64x1x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanedi_sps ((__builtin_aarch64_simd_di *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4_lane_s8 (int8_t *__ptr, int8x8x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev8qi ((__builtin_aarch64_simd_qi *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4_lane_s16 (int16_t *__ptr, int16x4x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev4hi ((__builtin_aarch64_simd_hi *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4_lane_s32 (int32_t *__ptr, int32x2x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev2si ((__builtin_aarch64_simd_si *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4_lane_s64 (int64_t *__ptr, int64x1x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanedi ((__builtin_aarch64_simd_di *) __ptr, __val,\n-\t\t\t\t__lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4_lane_u8 (uint8_t *__ptr, uint8x8x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev8qi_sus ((__builtin_aarch64_simd_qi *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4_lane_u16 (uint16_t *__ptr, uint16x4x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev4hi_sus ((__builtin_aarch64_simd_hi *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4_lane_u32 (uint32_t *__ptr, uint32x2x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev2si_sus ((__builtin_aarch64_simd_si *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4_lane_u64 (uint64_t *__ptr, uint64x1x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanedi_sus ((__builtin_aarch64_simd_di *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4q_lane_f16 (float16_t *__ptr, float16x8x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev8hf ((__builtin_aarch64_simd_hf *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4q_lane_f32 (float32_t *__ptr, float32x4x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev4sf ((__builtin_aarch64_simd_sf *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4q_lane_f64 (float64_t *__ptr, float64x2x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev2df ((__builtin_aarch64_simd_df *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4q_lane_p8 (poly8_t *__ptr, poly8x16x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev16qi_sps ((__builtin_aarch64_simd_qi *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4q_lane_p16 (poly16_t *__ptr, poly16x8x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev8hi_sps ((__builtin_aarch64_simd_hi *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4q_lane_p64 (poly64_t *__ptr, poly64x2x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev2di_sps ((__builtin_aarch64_simd_di *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4q_lane_s8 (int8_t *__ptr, int8x16x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev16qi ((__builtin_aarch64_simd_qi *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4q_lane_s16 (int16_t *__ptr, int16x8x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev8hi ((__builtin_aarch64_simd_hi *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4q_lane_s32 (int32_t *__ptr, int32x4x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev4si ((__builtin_aarch64_simd_si *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4q_lane_s64 (int64_t *__ptr, int64x2x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev2di ((__builtin_aarch64_simd_di *) __ptr, __val,\n-\t\t\t\t __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4q_lane_u8 (uint8_t *__ptr, uint8x16x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev16qi_sus ((__builtin_aarch64_simd_qi *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4q_lane_u16 (uint16_t *__ptr, uint16x8x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev8hi_sus ((__builtin_aarch64_simd_hi *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4q_lane_u32 (uint32_t *__ptr, uint32x4x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev4si_sus ((__builtin_aarch64_simd_si *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline void\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vst4q_lane_u64 (uint64_t *__ptr, uint64x2x4_t __val, const int __lane)\n-{\n- __builtin_aarch64_st4_lanev2di_sus ((__builtin_aarch64_simd_di *) __ptr,\n-\t\t\t\t __val, __lane);\n-}\n-\n-__extension__ extern __inline int64_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddlv_s32 (int32x2_t __a)\n-{\n- return __builtin_aarch64_saddlvv2si (__a);\n-}\n-\n-__extension__ extern __inline uint64_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddlv_u32 (uint32x2_t __a)\n-{\n- return __builtin_aarch64_uaddlvv2si_uu (__a);\n-}\n-\n-__extension__ extern __inline int16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqdmulh_laneq_s16 (int16x4_t __a, int16x8_t __b, const int __c)\n-{\n- return __builtin_aarch64_sqdmulh_laneqv4hi (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqdmulh_laneq_s32 (int32x2_t __a, int32x4_t __b, const int __c)\n-{\n- return __builtin_aarch64_sqdmulh_laneqv2si (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqdmulhq_laneq_s16 (int16x8_t __a, int16x8_t __b, const int __c)\n-{\n- return __builtin_aarch64_sqdmulh_laneqv8hi (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqdmulhq_laneq_s32 (int32x4_t __a, int32x4_t __b, const int __c)\n-{\n- return __builtin_aarch64_sqdmulh_laneqv4si (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmulh_laneq_s16 (int16x4_t __a, int16x8_t __b, const int __c)\n-{\n- return __builtin_aarch64_sqrdmulh_laneqv4hi (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmulh_laneq_s32 (int32x2_t __a, int32x4_t __b, const int __c)\n-{\n- return __builtin_aarch64_sqrdmulh_laneqv2si (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmulhq_laneq_s16 (int16x8_t __a, int16x8_t __b, const int __c)\n-{\n- return __builtin_aarch64_sqrdmulh_laneqv8hi (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmulhq_laneq_s32 (int32x4_t __a, int32x4_t __b, const int __c)\n-{\n- return __builtin_aarch64_sqrdmulh_laneqv4si (__a, __b, __c);\n-}\n-\n-/* Table intrinsics. */\n-\n-__extension__ extern __inline poly8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqtbl1_p8 (poly8x16_t __tab, uint8x8_t __idx)\n-{\n- return __builtin_aarch64_qtbl1v8qi_ppu (__tab, __idx);\n-}\n-\n-__extension__ extern __inline int8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqtbl1_s8 (int8x16_t __tab, uint8x8_t __idx)\n-{\n- return __builtin_aarch64_qtbl1v8qi_ssu (__tab, __idx);\n-}\n-\n-__extension__ extern __inline uint8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqtbl1_u8 (uint8x16_t __tab, uint8x8_t __idx)\n-{\n- return __builtin_aarch64_qtbl1v8qi_uuu (__tab, __idx);\n-}\n-\n-__extension__ extern __inline poly8x16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqtbl1q_p8 (poly8x16_t __tab, uint8x16_t __idx)\n-{\n- return __builtin_aarch64_qtbl1v16qi_ppu (__tab, __idx);\n-}\n-\n-__extension__ extern __inline int8x16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqtbl1q_s8 (int8x16_t __tab, uint8x16_t __idx)\n-{\n- return __builtin_aarch64_qtbl1v16qi_ssu (__tab, __idx);\n-}\n-\n-__extension__ extern __inline uint8x16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqtbl1q_u8 (uint8x16_t __tab, uint8x16_t __idx)\n-{\n- return __builtin_aarch64_qtbl1v16qi_uuu (__tab, __idx);\n-}\n-\n-__extension__ extern __inline int8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqtbx1_s8 (int8x8_t __r, int8x16_t __tab, uint8x8_t __idx)\n-{\n- return __builtin_aarch64_qtbx1v8qi_sssu (__r, __tab, __idx);\n-}\n-\n-__extension__ extern __inline uint8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqtbx1_u8 (uint8x8_t __r, uint8x16_t __tab, uint8x8_t __idx)\n-{\n- return __builtin_aarch64_qtbx1v8qi_uuuu (__r, __tab, __idx);\n-}\n-\n-__extension__ extern __inline poly8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqtbx1_p8 (poly8x8_t __r, poly8x16_t __tab, uint8x8_t __idx)\n-{\n- return __builtin_aarch64_qtbx1v8qi_pppu (__r, __tab, __idx);\n-}\n-\n-__extension__ extern __inline int8x16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqtbx1q_s8 (int8x16_t __r, int8x16_t __tab, uint8x16_t __idx)\n-{\n- return __builtin_aarch64_qtbx1v16qi_sssu (__r, __tab, __idx);\n-}\n-\n-__extension__ extern __inline uint8x16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqtbx1q_u8 (uint8x16_t __r, uint8x16_t __tab, uint8x16_t __idx)\n-{\n- return __builtin_aarch64_qtbx1v16qi_uuuu (__r, __tab, __idx);\n-}\n-\n-__extension__ extern __inline poly8x16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqtbx1q_p8 (poly8x16_t __r, poly8x16_t __tab, uint8x16_t __idx)\n-{\n- return __builtin_aarch64_qtbx1v16qi_pppu (__r, __tab, __idx);\n-}\n-\n-/* V7 legacy table intrinsics. */\n-\n-__extension__ extern __inline int8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vtbl1_s8 (int8x8_t __tab, int8x8_t __idx)\n-{\n- int8x16_t __temp = vcombine_s8 (__tab,\n-\t\t\t\t vcreate_s8 (__AARCH64_UINT64_C (0x0)));\n- return __builtin_aarch64_qtbl1v8qi (__temp, __idx);\n-}\n-\n-__extension__ extern __inline uint8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vtbl1_u8 (uint8x8_t __tab, uint8x8_t __idx)\n-{\n- uint8x16_t __temp = vcombine_u8 (__tab,\n-\t\t\t\t vcreate_u8 (__AARCH64_UINT64_C (0x0)));\n- return __builtin_aarch64_qtbl1v8qi_uuu (__temp, __idx);\n-}\n-\n-__extension__ extern __inline poly8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vtbl1_p8 (poly8x8_t __tab, uint8x8_t __idx)\n-{\n- poly8x16_t __temp = vcombine_p8 (__tab,\n-\t\t\t\t vcreate_p8 (__AARCH64_UINT64_C (0x0)));\n- return __builtin_aarch64_qtbl1v8qi_ppu (__temp, __idx);\n-}\n-\n-__extension__ extern __inline int8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vtbl2_s8 (int8x8x2_t __tab, int8x8_t __idx)\n-{\n- int8x16_t __temp = vcombine_s8 (__tab.val[0], __tab.val[1]);\n- return __builtin_aarch64_qtbl1v8qi (__temp, __idx);\n-}\n-\n-__extension__ extern __inline uint8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vtbl2_u8 (uint8x8x2_t __tab, uint8x8_t __idx)\n-{\n- uint8x16_t __temp = vcombine_u8 (__tab.val[0], __tab.val[1]);\n- return __builtin_aarch64_qtbl1v8qi_uuu (__temp, __idx);\n-}\n-\n-__extension__ extern __inline poly8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vtbl2_p8 (poly8x8x2_t __tab, uint8x8_t __idx)\n-{\n- poly8x16_t __temp = vcombine_p8 (__tab.val[0], __tab.val[1]);\n- return __builtin_aarch64_qtbl1v8qi_ppu (__temp, __idx);\n-}\n-\n-__extension__ extern __inline int8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vtbl3_s8 (int8x8x3_t __tab, int8x8_t __idx)\n-{\n- int8x16x2_t __temp;\n- __temp.val[0] = vcombine_s8 (__tab.val[0], __tab.val[1]);\n- __temp.val[1] = vcombine_s8 (__tab.val[2],\n-\t\t\t vcreate_s8 (__AARCH64_UINT64_C (0x0)));\n- return __builtin_aarch64_qtbl2v8qi (__temp, __idx);\n-}\n-\n-__extension__ extern __inline uint8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vtbl3_u8 (uint8x8x3_t __tab, uint8x8_t __idx)\n-{\n- uint8x16x2_t __temp;\n- __temp.val[0] = vcombine_u8 (__tab.val[0], __tab.val[1]);\n- __temp.val[1] = vcombine_u8 (__tab.val[2],\n-\t\t\t vcreate_u8 (__AARCH64_UINT64_C (0x0)));\n- return __builtin_aarch64_qtbl2v8qi_uuu (__temp, __idx);\n-}\n-\n-__extension__ extern __inline poly8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vtbl3_p8 (poly8x8x3_t __tab, uint8x8_t __idx)\n-{\n- poly8x16x2_t __temp;\n- __temp.val[0] = vcombine_p8 (__tab.val[0], __tab.val[1]);\n- __temp.val[1] = vcombine_p8 (__tab.val[2],\n-\t\t\t vcreate_p8 (__AARCH64_UINT64_C (0x0)));\n- return __builtin_aarch64_qtbl2v8qi_ppu (__temp, __idx);\n-}\n-\n-__extension__ extern __inline int8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vtbl4_s8 (int8x8x4_t __tab, int8x8_t __idx)\n-{\n- int8x16x2_t __temp;\n- __temp.val[0] = vcombine_s8 (__tab.val[0], __tab.val[1]);\n- __temp.val[1] = vcombine_s8 (__tab.val[2], __tab.val[3]);\n- return __builtin_aarch64_qtbl2v8qi (__temp, __idx);\n-}\n-\n-__extension__ extern __inline uint8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vtbl4_u8 (uint8x8x4_t __tab, uint8x8_t __idx)\n-{\n- uint8x16x2_t __temp;\n- __temp.val[0] = vcombine_u8 (__tab.val[0], __tab.val[1]);\n- __temp.val[1] = vcombine_u8 (__tab.val[2], __tab.val[3]);\n- return __builtin_aarch64_qtbl2v8qi_uuu (__temp, __idx);\n-}\n-\n-__extension__ extern __inline poly8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vtbl4_p8 (poly8x8x4_t __tab, uint8x8_t __idx)\n-{\n- poly8x16x2_t __temp;\n- __temp.val[0] = vcombine_p8 (__tab.val[0], __tab.val[1]);\n- __temp.val[1] = vcombine_p8 (__tab.val[2], __tab.val[3]);\n- return __builtin_aarch64_qtbl2v8qi_ppu (__temp, __idx);\n-}\n-\n-__extension__ extern __inline int8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vtbx2_s8 (int8x8_t __r, int8x8x2_t __tab, int8x8_t __idx)\n-{\n- int8x16_t __temp = vcombine_s8 (__tab.val[0], __tab.val[1]);\n- return __builtin_aarch64_qtbx1v8qi (__r, __temp, __idx);\n-}\n-\n-__extension__ extern __inline uint8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vtbx2_u8 (uint8x8_t __r, uint8x8x2_t __tab, uint8x8_t __idx)\n-{\n- uint8x16_t __temp = vcombine_u8 (__tab.val[0], __tab.val[1]);\n- return __builtin_aarch64_qtbx1v8qi_uuuu (__r, __temp, __idx);\n-}\n-\n-__extension__ extern __inline poly8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vtbx2_p8 (poly8x8_t __r, poly8x8x2_t __tab, uint8x8_t __idx)\n-{\n- poly8x16_t __temp = vcombine_p8 (__tab.val[0], __tab.val[1]);\n- return __builtin_aarch64_qtbx1v8qi_pppu (__r, __temp, __idx);\n-}\n-\n-/* End of temporary inline asm. */\n-\n-/* Start of optimal implementations in approved order. */\n-\n-/* vabd. */\n-\n-__extension__ extern __inline float32_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabds_f32 (float32_t __a, float32_t __b)\n-{\n- return __builtin_aarch64_fabdsf (__a, __b);\n-}\n-\n-__extension__ extern __inline float64_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabdd_f64 (float64_t __a, float64_t __b)\n-{\n- return __builtin_aarch64_fabddf (__a, __b);\n-}\n-\n-__extension__ extern __inline float32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabd_f32 (float32x2_t __a, float32x2_t __b)\n-{\n- return __builtin_aarch64_fabdv2sf (__a, __b);\n-}\n-\n-__extension__ extern __inline float64x1_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabd_f64 (float64x1_t __a, float64x1_t __b)\n-{\n- return (float64x1_t) {vabdd_f64 (vget_lane_f64 (__a, 0),\n-\t\t\t\t vget_lane_f64 (__b, 0))};\n-}\n-\n-__extension__ extern __inline float32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabdq_f32 (float32x4_t __a, float32x4_t __b)\n-{\n- return __builtin_aarch64_fabdv4sf (__a, __b);\n-}\n-\n-__extension__ extern __inline float64x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabdq_f64 (float64x2_t __a, float64x2_t __b)\n-{\n- return __builtin_aarch64_fabdv2df (__a, __b);\n-}\n-\n-/* vabs */\n-\n-__extension__ extern __inline float32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabs_f32 (float32x2_t __a)\n-{\n- return __builtin_aarch64_absv2sf (__a);\n-}\n-\n-__extension__ extern __inline float64x1_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabs_f64 (float64x1_t __a)\n-{\n- return (float64x1_t) {__builtin_fabs (__a[0])};\n-}\n-\n-__extension__ extern __inline int8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabs_s8 (int8x8_t __a)\n-{\n- return __builtin_aarch64_absv8qi (__a);\n-}\n-\n-__extension__ extern __inline int16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabs_s16 (int16x4_t __a)\n-{\n- return __builtin_aarch64_absv4hi (__a);\n-}\n-\n-__extension__ extern __inline int32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabs_s32 (int32x2_t __a)\n-{\n- return __builtin_aarch64_absv2si (__a);\n-}\n-\n-__extension__ extern __inline int64x1_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabs_s64 (int64x1_t __a)\n-{\n- return (int64x1_t) {__builtin_aarch64_absdi (__a[0])};\n-}\n-\n-__extension__ extern __inline float32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabsq_f32 (float32x4_t __a)\n-{\n- return __builtin_aarch64_absv4sf (__a);\n-}\n-\n-__extension__ extern __inline float64x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabsq_f64 (float64x2_t __a)\n-{\n- return __builtin_aarch64_absv2df (__a);\n-}\n-\n-__extension__ extern __inline int8x16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabsq_s8 (int8x16_t __a)\n-{\n- return __builtin_aarch64_absv16qi (__a);\n-}\n-\n-__extension__ extern __inline int16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabsq_s16 (int16x8_t __a)\n-{\n- return __builtin_aarch64_absv8hi (__a);\n-}\n-\n-__extension__ extern __inline int32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabsq_s32 (int32x4_t __a)\n-{\n- return __builtin_aarch64_absv4si (__a);\n-}\n-\n-__extension__ extern __inline int64x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabsq_s64 (int64x2_t __a)\n-{\n- return __builtin_aarch64_absv2di (__a);\n-}\n-\n-/* Try to avoid moving between integer and vector registers.\n- For why the cast to unsigned is needed check the vnegd_s64 intrinsic.\n- There is a testcase related to this issue:\n- gcc.target/aarch64/vabsd_s64.c. */\n-\n-__extension__ extern __inline int64_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vabsd_s64 (int64_t __a)\n-{\n- return __a < 0 ? - (uint64_t) __a : __a;\n-}\n-\n-/* vadd */\n-\n-__extension__ extern __inline int64_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddd_s64 (int64_t __a, int64_t __b)\n-{\n- return __a + __b;\n-}\n-\n-__extension__ extern __inline uint64_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddd_u64 (uint64_t __a, uint64_t __b)\n-{\n- return __a + __b;\n-}\n-\n-/* vaddv */\n-\n-__extension__ extern __inline int8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddv_s8 (int8x8_t __a)\n-{\n- return __builtin_aarch64_reduc_plus_scal_v8qi (__a);\n-}\n-\n-__extension__ extern __inline int16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddv_s16 (int16x4_t __a)\n-{\n- return __builtin_aarch64_reduc_plus_scal_v4hi (__a);\n-}\n-\n-__extension__ extern __inline int32_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddv_s32 (int32x2_t __a)\n-{\n- return __builtin_aarch64_reduc_plus_scal_v2si (__a);\n-}\n-\n-__extension__ extern __inline uint8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddv_u8 (uint8x8_t __a)\n-{\n- return __builtin_aarch64_reduc_plus_scal_v8qi_uu (__a);\n-}\n-\n-__extension__ extern __inline uint16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddv_u16 (uint16x4_t __a)\n-{\n- return __builtin_aarch64_reduc_plus_scal_v4hi_uu (__a);\n-}\n-\n-__extension__ extern __inline uint32_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddv_u32 (uint32x2_t __a)\n-{\n- return __builtin_aarch64_reduc_plus_scal_v2si_uu (__a);\n-}\n-\n-__extension__ extern __inline int8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddvq_s8 (int8x16_t __a)\n-{\n- return __builtin_aarch64_reduc_plus_scal_v16qi (__a);\n-}\n-\n-__extension__ extern __inline int16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddvq_s16 (int16x8_t __a)\n-{\n- return __builtin_aarch64_reduc_plus_scal_v8hi (__a);\n-}\n-\n-__extension__ extern __inline int32_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddvq_s32 (int32x4_t __a)\n-{\n- return __builtin_aarch64_reduc_plus_scal_v4si (__a);\n-}\n-\n-__extension__ extern __inline int64_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddvq_s64 (int64x2_t __a)\n-{\n- return __builtin_aarch64_reduc_plus_scal_v2di (__a);\n-}\n-\n-__extension__ extern __inline uint8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddvq_u8 (uint8x16_t __a)\n-{\n- return __builtin_aarch64_reduc_plus_scal_v16qi_uu (__a);\n-}\n-\n-__extension__ extern __inline uint16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddvq_u16 (uint16x8_t __a)\n-{\n- return __builtin_aarch64_reduc_plus_scal_v8hi_uu (__a);\n-}\n-\n-__extension__ extern __inline uint32_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddvq_u32 (uint32x4_t __a)\n-{\n- return __builtin_aarch64_reduc_plus_scal_v4si_uu (__a);\n-}\n-\n-__extension__ extern __inline uint64_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddvq_u64 (uint64x2_t __a)\n-{\n- return __builtin_aarch64_reduc_plus_scal_v2di_uu (__a);\n-}\n-\n-__extension__ extern __inline float32_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddv_f32 (float32x2_t __a)\n-{\n- return __builtin_aarch64_reduc_plus_scal_v2sf (__a);\n-}\n-\n-__extension__ extern __inline float32_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddvq_f32 (float32x4_t __a)\n-{\n- return __builtin_aarch64_reduc_plus_scal_v4sf (__a);\n-}\n-\n-__extension__ extern __inline float64_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaddvq_f64 (float64x2_t __a)\n-{\n- return __builtin_aarch64_reduc_plus_scal_v2df (__a);\n-}\n-\n-/* vbsl */\n-\n-__extension__ extern __inline float16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbsl_f16 (uint16x4_t __a, float16x4_t __b, float16x4_t __c)\n-{\n- return __builtin_aarch64_simd_bslv4hf_suss (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline float32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbsl_f32 (uint32x2_t __a, float32x2_t __b, float32x2_t __c)\n-{\n- return __builtin_aarch64_simd_bslv2sf_suss (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline float64x1_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbsl_f64 (uint64x1_t __a, float64x1_t __b, float64x1_t __c)\n-{\n- return (float64x1_t)\n- { __builtin_aarch64_simd_bsldf_suss (__a[0], __b[0], __c[0]) };\n-}\n-\n-__extension__ extern __inline poly8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbsl_p8 (uint8x8_t __a, poly8x8_t __b, poly8x8_t __c)\n-{\n- return __builtin_aarch64_simd_bslv8qi_pupp (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline poly16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbsl_p16 (uint16x4_t __a, poly16x4_t __b, poly16x4_t __c)\n-{\n- return __builtin_aarch64_simd_bslv4hi_pupp (__a, __b, __c);\n-}\n-__extension__ extern __inline poly64x1_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbsl_p64 (uint64x1_t __a, poly64x1_t __b, poly64x1_t __c)\n-{\n- return (poly64x1_t)\n- {__builtin_aarch64_simd_bsldi_pupp (__a[0], __b[0], __c[0])};\n-}\n-\n-__extension__ extern __inline int8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbsl_s8 (uint8x8_t __a, int8x8_t __b, int8x8_t __c)\n-{\n- return __builtin_aarch64_simd_bslv8qi_suss (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbsl_s16 (uint16x4_t __a, int16x4_t __b, int16x4_t __c)\n-{\n- return __builtin_aarch64_simd_bslv4hi_suss (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbsl_s32 (uint32x2_t __a, int32x2_t __b, int32x2_t __c)\n-{\n- return __builtin_aarch64_simd_bslv2si_suss (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int64x1_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbsl_s64 (uint64x1_t __a, int64x1_t __b, int64x1_t __c)\n-{\n- return (int64x1_t)\n- {__builtin_aarch64_simd_bsldi_suss (__a[0], __b[0], __c[0])};\n-}\n-\n-__extension__ extern __inline uint8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbsl_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)\n-{\n- return __builtin_aarch64_simd_bslv8qi_uuuu (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline uint16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbsl_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)\n-{\n- return __builtin_aarch64_simd_bslv4hi_uuuu (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline uint32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbsl_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)\n-{\n- return __builtin_aarch64_simd_bslv2si_uuuu (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline uint64x1_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbsl_u64 (uint64x1_t __a, uint64x1_t __b, uint64x1_t __c)\n-{\n- return (uint64x1_t)\n- {__builtin_aarch64_simd_bsldi_uuuu (__a[0], __b[0], __c[0])};\n-}\n-\n-__extension__ extern __inline float16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbslq_f16 (uint16x8_t __a, float16x8_t __b, float16x8_t __c)\n-{\n- return __builtin_aarch64_simd_bslv8hf_suss (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline float32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbslq_f32 (uint32x4_t __a, float32x4_t __b, float32x4_t __c)\n-{\n- return __builtin_aarch64_simd_bslv4sf_suss (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline float64x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbslq_f64 (uint64x2_t __a, float64x2_t __b, float64x2_t __c)\n-{\n- return __builtin_aarch64_simd_bslv2df_suss (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline poly8x16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbslq_p8 (uint8x16_t __a, poly8x16_t __b, poly8x16_t __c)\n-{\n- return __builtin_aarch64_simd_bslv16qi_pupp (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline poly16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbslq_p16 (uint16x8_t __a, poly16x8_t __b, poly16x8_t __c)\n-{\n- return __builtin_aarch64_simd_bslv8hi_pupp (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int8x16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbslq_s8 (uint8x16_t __a, int8x16_t __b, int8x16_t __c)\n-{\n- return __builtin_aarch64_simd_bslv16qi_suss (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbslq_s16 (uint16x8_t __a, int16x8_t __b, int16x8_t __c)\n-{\n- return __builtin_aarch64_simd_bslv8hi_suss (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline poly64x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbslq_p64 (uint64x2_t __a, poly64x2_t __b, poly64x2_t __c)\n-{\n- return __builtin_aarch64_simd_bslv2di_pupp (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbslq_s32 (uint32x4_t __a, int32x4_t __b, int32x4_t __c)\n-{\n- return __builtin_aarch64_simd_bslv4si_suss (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int64x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbslq_s64 (uint64x2_t __a, int64x2_t __b, int64x2_t __c)\n-{\n- return __builtin_aarch64_simd_bslv2di_suss (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline uint8x16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbslq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)\n-{\n- return __builtin_aarch64_simd_bslv16qi_uuuu (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline uint16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbslq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)\n-{\n- return __builtin_aarch64_simd_bslv8hi_uuuu (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline uint32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbslq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)\n-{\n- return __builtin_aarch64_simd_bslv4si_uuuu (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline uint64x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vbslq_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c)\n-{\n- return __builtin_aarch64_simd_bslv2di_uuuu (__a, __b, __c);\n-}\n-\n-/* ARMv8.1-A instrinsics. */\n-#pragma GCC push_options\n-#pragma GCC target (\"+nothing+rdma\")\n-\n-__extension__ extern __inline int16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlah_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)\n-{\n- return __builtin_aarch64_sqrdmlahv4hi (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlah_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)\n-{\n- return __builtin_aarch64_sqrdmlahv2si (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlahq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)\n-{\n- return __builtin_aarch64_sqrdmlahv8hi (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlahq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)\n-{\n- return __builtin_aarch64_sqrdmlahv4si (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlsh_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)\n-{\n- return __builtin_aarch64_sqrdmlshv4hi (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlsh_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)\n-{\n- return __builtin_aarch64_sqrdmlshv2si (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlshq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)\n-{\n- return __builtin_aarch64_sqrdmlshv8hi (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlshq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)\n-{\n- return __builtin_aarch64_sqrdmlshv4si (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlah_laneq_s16 (int16x4_t __a, int16x4_t __b, int16x8_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlah_laneqv4hi (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlah_laneq_s32 (int32x2_t __a, int32x2_t __b, int32x4_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlah_laneqv2si (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlahq_laneq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlah_laneqv8hi (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlahq_laneq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlah_laneqv4si (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlsh_laneq_s16 (int16x4_t __a, int16x4_t __b, int16x8_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlsh_laneqv4hi (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlsh_laneq_s32 (int32x2_t __a, int32x2_t __b, int32x4_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlsh_laneqv2si (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlshq_laneq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlsh_laneqv8hi (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlshq_laneq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlsh_laneqv4si (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlah_lane_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlah_lanev4hi (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlah_lane_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlah_lanev2si (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlahq_lane_s16 (int16x8_t __a, int16x8_t __b, int16x4_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlah_lanev8hi (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlahq_lane_s32 (int32x4_t __a, int32x4_t __b, int32x2_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlah_lanev4si (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlahh_s16 (int16_t __a, int16_t __b, int16_t __c)\n-{\n- return (int16_t) __builtin_aarch64_sqrdmlahhi (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlahh_lane_s16 (int16_t __a, int16_t __b, int16x4_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlah_lanehi (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlahh_laneq_s16 (int16_t __a, int16_t __b, int16x8_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlah_laneqhi (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int32_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlahs_s32 (int32_t __a, int32_t __b, int32_t __c)\n-{\n- return (int32_t) __builtin_aarch64_sqrdmlahsi (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int32_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlahs_lane_s32 (int32_t __a, int32_t __b, int32x2_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlah_lanesi (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int32_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlahs_laneq_s32 (int32_t __a, int32_t __b, int32x4_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlah_laneqsi (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlsh_lane_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlsh_lanev4hi (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlsh_lane_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlsh_lanev2si (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlshq_lane_s16 (int16x8_t __a, int16x8_t __b, int16x4_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlsh_lanev8hi (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlshq_lane_s32 (int32x4_t __a, int32x4_t __b, int32x2_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlsh_lanev4si (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlshh_s16 (int16_t __a, int16_t __b, int16_t __c)\n-{\n- return (int16_t) __builtin_aarch64_sqrdmlshhi (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlshh_lane_s16 (int16_t __a, int16_t __b, int16x4_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlsh_lanehi (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlshh_laneq_s16 (int16_t __a, int16_t __b, int16x8_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlsh_laneqhi (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int32_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlshs_s32 (int32_t __a, int32_t __b, int32_t __c)\n-{\n- return (int32_t) __builtin_aarch64_sqrdmlshsi (__a, __b, __c);\n-}\n-\n-__extension__ extern __inline int32_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlshs_lane_s32 (int32_t __a, int32_t __b, int32x2_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlsh_lanesi (__a, __b, __c, __d);\n-}\n-\n-__extension__ extern __inline int32_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vqrdmlshs_laneq_s32 (int32_t __a, int32_t __b, int32x4_t __c, const int __d)\n-{\n- return __builtin_aarch64_sqrdmlsh_laneqsi (__a, __b, __c, __d);\n-}\n-#pragma GCC pop_options\n-\n-#pragma GCC push_options\n-#pragma GCC target (\"+nothing+aes\")\n-/* vaes */\n-\n-__extension__ extern __inline uint8x16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaeseq_u8 (uint8x16_t data, uint8x16_t key)\n-{\n- return __builtin_aarch64_crypto_aesev16qi_uuu (data, key);\n-}\n-\n-__extension__ extern __inline uint8x16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaesdq_u8 (uint8x16_t data, uint8x16_t key)\n-{\n- return __builtin_aarch64_crypto_aesdv16qi_uuu (data, key);\n-}\n-\n-__extension__ extern __inline uint8x16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaesmcq_u8 (uint8x16_t data)\n-{\n- return __builtin_aarch64_crypto_aesmcv16qi_uu (data);\n-}\n-\n-__extension__ extern __inline uint8x16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vaesimcq_u8 (uint8x16_t data)\n-{\n- return __builtin_aarch64_crypto_aesimcv16qi_uu (data);\n-}\n-\n-__extension__ extern __inline poly128_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_p64 (poly64_t __a, poly64_t __b)\n-{\n- return\n- __builtin_aarch64_crypto_pmulldi_ppp (__a, __b);\n-}\n-\n-__extension__ extern __inline poly128_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmull_high_p64 (poly64x2_t __a, poly64x2_t __b)\n-{\n- return __builtin_aarch64_crypto_pmullv2di_ppp (__a, __b);\n-}\n-\n-#pragma GCC pop_options\n-\n-/* vcage */\n-\n-__extension__ extern __inline uint64x1_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcage_f64 (float64x1_t __a, float64x1_t __b)\n-{\n- return vcreate_u64 (__builtin_aarch64_facgedf_uss (__a[0], __b[0]));\n-}\n-\n-__extension__ extern __inline uint32_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcages_f32 (float32_t __a, float32_t __b)\n-{\n- return __builtin_aarch64_facgesf_uss (__a, __b);\n-}\n-\n-__extension__ extern __inline uint32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcage_f32 (float32x2_t __a, float32x2_t __b)\n-{\n- return __builtin_aarch64_facgev2sf_uss (__a, __b);\n-}\n-\n-__extension__ extern __inline uint32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcageq_f32 (float32x4_t __a, float32x4_t __b)\n-{\n- return __builtin_aarch64_facgev4sf_uss (__a, __b);\n-}\n-\n-__extension__ extern __inline uint64_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcaged_f64 (float64_t __a, float64_t __b)\n-{\n- return __builtin_aarch64_facgedf_uss (__a, __b);\n-}\n-\n-__extension__ extern __inline uint64x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcageq_f64 (float64x2_t __a, float64x2_t __b)\n-{\n- return __builtin_aarch64_facgev2df_uss (__a, __b);\n-}\n-\n-/* vcagt */\n-\n-__extension__ extern __inline uint32_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcagts_f32 (float32_t __a, float32_t __b)\n-{\n- return __builtin_aarch64_facgtsf_uss (__a, __b);\n-}\n-\n-__extension__ extern __inline uint32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcagt_f32 (float32x2_t __a, float32x2_t __b)\n-{\n- return __builtin_aarch64_facgtv2sf_uss (__a, __b);\n-}\n-\n-__extension__ extern __inline uint64x1_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcagt_f64 (float64x1_t __a, float64x1_t __b)\n-{\n- return vcreate_u64 (__builtin_aarch64_facgtdf_uss (__a[0], __b[0]));\n-}\n-\n-__extension__ extern __inline uint32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcagtq_f32 (float32x4_t __a, float32x4_t __b)\n-{\n- return __builtin_aarch64_facgtv4sf_uss (__a, __b);\n-}\n-\n-__extension__ extern __inline uint64_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcagtd_f64 (float64_t __a, float64_t __b)\n-{\n- return __builtin_aarch64_facgtdf_uss (__a, __b);\n-}\n-\n-__extension__ extern __inline uint64x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcagtq_f64 (float64x2_t __a, float64x2_t __b)\n-{\n- return __builtin_aarch64_facgtv2df_uss (__a, __b);\n-}\n-\n-/* vcale */\n-\n-__extension__ extern __inline uint32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcale_f32 (float32x2_t __a, float32x2_t __b)\n-{\n- return __builtin_aarch64_faclev2sf_uss (__a, __b);\n-}\n-\n-__extension__ extern __inline uint64x1_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcale_f64 (float64x1_t __a, float64x1_t __b)\n-{\n- return vcreate_u64 (__builtin_aarch64_facledf_uss (__a[0], __b[0]));\n-}\n-\n-__extension__ extern __inline uint64_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcaled_f64 (float64_t __a, float64_t __b)\n-{\n- return __builtin_aarch64_facledf_uss (__a, __b);\n-}\n-\n-__extension__ extern __inline uint32_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcales_f32 (float32_t __a, float32_t __b)\n-{\n- return __builtin_aarch64_faclesf_uss (__a, __b);\n-}\n-\n-__extension__ extern __inline uint32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcaleq_f32 (float32x4_t __a, float32x4_t __b)\n-{\n- return __builtin_aarch64_faclev4sf_uss (__a, __b);\n-}\n-\n-__extension__ extern __inline uint64x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcaleq_f64 (float64x2_t __a, float64x2_t __b)\n-{\n- return __builtin_aarch64_faclev2df_uss (__a, __b);\n-}\n-\n-/* vcalt */\n-\n-__extension__ extern __inline uint32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcalt_f32 (float32x2_t __a, float32x2_t __b)\n-{\n- return __builtin_aarch64_facltv2sf_uss (__a, __b);\n-}\n-\n-__extension__ extern __inline uint64x1_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcalt_f64 (float64x1_t __a, float64x1_t __b)\n-{\n- return vcreate_u64 (__builtin_aarch64_facltdf_uss (__a[0], __b[0]));\n-}\n-\n-__extension__ extern __inline uint64_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcaltd_f64 (float64_t __a, float64_t __b)\n-{\n- return __builtin_aarch64_facltdf_uss (__a, __b);\n-}\n-\n-__extension__ extern __inline uint32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcaltq_f32 (float32x4_t __a, float32x4_t __b)\n-{\n- return __builtin_aarch64_facltv4sf_uss (__a, __b);\n-}\n-\n-__extension__ extern __inline uint64x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcaltq_f64 (float64x2_t __a, float64x2_t __b)\n-{\n- return __builtin_aarch64_facltv2df_uss (__a, __b);\n-}\n-\n-__extension__ extern __inline uint32_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcalts_f32 (float32_t __a, float32_t __b)\n-{\n- return __builtin_aarch64_facltsf_uss (__a, __b);\n-}\n-\n-/* vceq - vector. */\n-\n-__extension__ extern __inline uint32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceq_f32 (float32x2_t __a, float32x2_t __b)\n-{\n- return (uint32x2_t) (__a == __b);\n-}\n-\n-__extension__ extern __inline uint64x1_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceq_f64 (float64x1_t __a, float64x1_t __b)\n-{\n- return (uint64x1_t) (__a == __b);\n-}\n-\n-__extension__ extern __inline uint8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceq_p8 (poly8x8_t __a, poly8x8_t __b)\n-{\n- return (uint8x8_t) (__a == __b);\n-}\n-\n-__extension__ extern __inline uint64x1_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceq_p64 (poly64x1_t __a, poly64x1_t __b)\n-{\n- return (uint64x1_t) (__a == __b);\n-}\n-\n-__extension__ extern __inline uint8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceq_s8 (int8x8_t __a, int8x8_t __b)\n-{\n- return (uint8x8_t) (__a == __b);\n-}\n-\n-__extension__ extern __inline uint16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceq_s16 (int16x4_t __a, int16x4_t __b)\n-{\n- return (uint16x4_t) (__a == __b);\n-}\n-\n-__extension__ extern __inline uint32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceq_s32 (int32x2_t __a, int32x2_t __b)\n-{\n- return (uint32x2_t) (__a == __b);\n-}\n-\n-__extension__ extern __inline uint64x1_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceq_s64 (int64x1_t __a, int64x1_t __b)\n-{\n- return (uint64x1_t) (__a == __b);\n-}\n-\n-__extension__ extern __inline uint8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceq_u8 (uint8x8_t __a, uint8x8_t __b)\n-{\n- return (__a == __b);\n-}\n-\n-__extension__ extern __inline uint16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceq_u16 (uint16x4_t __a, uint16x4_t __b)\n-{\n- return (__a == __b);\n-}\n-\n-__extension__ extern __inline uint32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceq_u32 (uint32x2_t __a, uint32x2_t __b)\n-{\n- return (__a == __b);\n-}\n-\n-__extension__ extern __inline uint64x1_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceq_u64 (uint64x1_t __a, uint64x1_t __b)\n-{\n- return (__a == __b);\n-}\n-\n-__extension__ extern __inline uint32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqq_f32 (float32x4_t __a, float32x4_t __b)\n+vqtbx1_u8 (uint8x8_t __r, uint8x16_t __tab, uint8x8_t __idx)\n {\n- return (uint32x4_t) (__a == __b);\n+ return __builtin_aarch64_qtbx1v8qi_uuuu (__r, __tab, __idx);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline poly8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqq_f64 (float64x2_t __a, float64x2_t __b)\n+vqtbx1_p8 (poly8x8_t __r, poly8x16_t __tab, uint8x8_t __idx)\n {\n- return (uint64x2_t) (__a == __b);\n+ return __builtin_aarch64_qtbx1v8qi_pppu (__r, __tab, __idx);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline int8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqq_p8 (poly8x16_t __a, poly8x16_t __b)\n+vqtbx1q_s8 (int8x16_t __r, int8x16_t __tab, uint8x16_t __idx)\n {\n- return (uint8x16_t) (__a == __b);\n+ return __builtin_aarch64_qtbx1v16qi_sssu (__r, __tab, __idx);\n }\n \n __extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqq_s8 (int8x16_t __a, int8x16_t __b)\n-{\n- return (uint8x16_t) (__a == __b);\n-}\n-\n-__extension__ extern __inline uint16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqq_s16 (int16x8_t __a, int16x8_t __b)\n-{\n- return (uint16x8_t) (__a == __b);\n-}\n-\n-__extension__ extern __inline uint32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqq_s32 (int32x4_t __a, int32x4_t __b)\n-{\n- return (uint32x4_t) (__a == __b);\n-}\n-\n-__extension__ extern __inline uint64x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqq_s64 (int64x2_t __a, int64x2_t __b)\n+vqtbx1q_u8 (uint8x16_t __r, uint8x16_t __tab, uint8x16_t __idx)\n {\n- return (uint64x2_t) (__a == __b);\n+ return __builtin_aarch64_qtbx1v16qi_uuuu (__r, __tab, __idx);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline poly8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqq_u8 (uint8x16_t __a, uint8x16_t __b)\n+vqtbx1q_p8 (poly8x16_t __r, poly8x16_t __tab, uint8x16_t __idx)\n {\n- return (__a == __b);\n+ return __builtin_aarch64_qtbx1v16qi_pppu (__r, __tab, __idx);\n }\n \n-__extension__ extern __inline uint16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqq_u16 (uint16x8_t __a, uint16x8_t __b)\n-{\n- return (__a == __b);\n-}\n+/* V7 legacy table intrinsics. */\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqq_u32 (uint32x4_t __a, uint32x4_t __b)\n+vtbl1_s8 (int8x8_t __tab, int8x8_t __idx)\n {\n- return (__a == __b);\n+ int8x16_t __temp = vcombine_s8 (__tab,\n+\t\t\t\t vcreate_s8 (__AARCH64_UINT64_C (0x0)));\n+ return __builtin_aarch64_qtbl1v8qi (__temp, __idx);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqq_u64 (uint64x2_t __a, uint64x2_t __b)\n+vtbl1_u8 (uint8x8_t __tab, uint8x8_t __idx)\n {\n- return (__a == __b);\n+ uint8x16_t __temp = vcombine_u8 (__tab,\n+\t\t\t\t vcreate_u8 (__AARCH64_UINT64_C (0x0)));\n+ return __builtin_aarch64_qtbl1v8qi_uuu (__temp, __idx);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline poly8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqq_p64 (poly64x2_t __a, poly64x2_t __b)\n+vtbl1_p8 (poly8x8_t __tab, uint8x8_t __idx)\n {\n- return (__a == __b);\n+ poly8x16_t __temp = vcombine_p8 (__tab,\n+\t\t\t\t vcreate_p8 (__AARCH64_UINT64_C (0x0)));\n+ return __builtin_aarch64_qtbl1v8qi_ppu (__temp, __idx);\n }\n \n-/* vceq - scalar. */\n-\n-__extension__ extern __inline uint32_t\n+__extension__ extern __inline int8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqs_f32 (float32_t __a, float32_t __b)\n+vtbl2_s8 (int8x8x2_t __tab, int8x8_t __idx)\n {\n- return __a == __b ? -1 : 0;\n+ int8x16_t __temp = vcombine_s8 (__tab.val[0], __tab.val[1]);\n+ return __builtin_aarch64_qtbl1v8qi (__temp, __idx);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqd_s64 (int64_t __a, int64_t __b)\n+vtbl2_u8 (uint8x8x2_t __tab, uint8x8_t __idx)\n {\n- return __a == __b ? -1ll : 0ll;\n+ uint8x16_t __temp = vcombine_u8 (__tab.val[0], __tab.val[1]);\n+ return __builtin_aarch64_qtbl1v8qi_uuu (__temp, __idx);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline poly8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqd_u64 (uint64_t __a, uint64_t __b)\n+vtbl2_p8 (poly8x8x2_t __tab, uint8x8_t __idx)\n {\n- return __a == __b ? -1ll : 0ll;\n+ poly8x16_t __temp = vcombine_p8 (__tab.val[0], __tab.val[1]);\n+ return __builtin_aarch64_qtbl1v8qi_ppu (__temp, __idx);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline int8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqd_f64 (float64_t __a, float64_t __b)\n+vtbl3_s8 (int8x8x3_t __tab, int8x8_t __idx)\n {\n- return __a == __b ? -1ll : 0ll;\n+ int8x16x2_t __temp;\n+ __temp.val[0] = vcombine_s8 (__tab.val[0], __tab.val[1]);\n+ __temp.val[1] = vcombine_s8 (__tab.val[2],\n+\t\t\t vcreate_s8 (__AARCH64_UINT64_C (0x0)));\n+ return __builtin_aarch64_qtbl2v8qi (__temp, __idx);\n }\n \n-/* vceqz - vector. */\n-\n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqz_f32 (float32x2_t __a)\n+vtbl3_u8 (uint8x8x3_t __tab, uint8x8_t __idx)\n {\n- return (uint32x2_t) (__a == 0.0f);\n+ uint8x16x2_t __temp;\n+ __temp.val[0] = vcombine_u8 (__tab.val[0], __tab.val[1]);\n+ __temp.val[1] = vcombine_u8 (__tab.val[2],\n+\t\t\t vcreate_u8 (__AARCH64_UINT64_C (0x0)));\n+ return __builtin_aarch64_qtbl2v8qi_uuu (__temp, __idx);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline poly8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqz_f64 (float64x1_t __a)\n+vtbl3_p8 (poly8x8x3_t __tab, uint8x8_t __idx)\n {\n- return (uint64x1_t) (__a == (float64x1_t) {0.0});\n+ poly8x16x2_t __temp;\n+ __temp.val[0] = vcombine_p8 (__tab.val[0], __tab.val[1]);\n+ __temp.val[1] = vcombine_p8 (__tab.val[2],\n+\t\t\t vcreate_p8 (__AARCH64_UINT64_C (0x0)));\n+ return __builtin_aarch64_qtbl2v8qi_ppu (__temp, __idx);\n }\n \n-__extension__ extern __inline uint8x8_t\n+__extension__ extern __inline int8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqz_p8 (poly8x8_t __a)\n+vtbl4_s8 (int8x8x4_t __tab, int8x8_t __idx)\n {\n- return (uint8x8_t) (__a == 0);\n+ int8x16x2_t __temp;\n+ __temp.val[0] = vcombine_s8 (__tab.val[0], __tab.val[1]);\n+ __temp.val[1] = vcombine_s8 (__tab.val[2], __tab.val[3]);\n+ return __builtin_aarch64_qtbl2v8qi (__temp, __idx);\n }\n \n __extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqz_s8 (int8x8_t __a)\n-{\n- return (uint8x8_t) (__a == 0);\n-}\n-\n-__extension__ extern __inline uint16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqz_s16 (int16x4_t __a)\n+vtbl4_u8 (uint8x8x4_t __tab, uint8x8_t __idx)\n {\n- return (uint16x4_t) (__a == 0);\n+ uint8x16x2_t __temp;\n+ __temp.val[0] = vcombine_u8 (__tab.val[0], __tab.val[1]);\n+ __temp.val[1] = vcombine_u8 (__tab.val[2], __tab.val[3]);\n+ return __builtin_aarch64_qtbl2v8qi_uuu (__temp, __idx);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline poly8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqz_s32 (int32x2_t __a)\n+vtbl4_p8 (poly8x8x4_t __tab, uint8x8_t __idx)\n {\n- return (uint32x2_t) (__a == 0);\n+ poly8x16x2_t __temp;\n+ __temp.val[0] = vcombine_p8 (__tab.val[0], __tab.val[1]);\n+ __temp.val[1] = vcombine_p8 (__tab.val[2], __tab.val[3]);\n+ return __builtin_aarch64_qtbl2v8qi_ppu (__temp, __idx);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline int8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqz_s64 (int64x1_t __a)\n+vtbx2_s8 (int8x8_t __r, int8x8x2_t __tab, int8x8_t __idx)\n {\n- return (uint64x1_t) (__a == __AARCH64_INT64_C (0));\n+ int8x16_t __temp = vcombine_s8 (__tab.val[0], __tab.val[1]);\n+ return __builtin_aarch64_qtbx1v8qi (__r, __temp, __idx);\n }\n \n __extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqz_u8 (uint8x8_t __a)\n-{\n- return (__a == 0);\n-}\n-\n-__extension__ extern __inline uint16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqz_u16 (uint16x4_t __a)\n+vtbx2_u8 (uint8x8_t __r, uint8x8x2_t __tab, uint8x8_t __idx)\n {\n- return (__a == 0);\n+ uint8x16_t __temp = vcombine_u8 (__tab.val[0], __tab.val[1]);\n+ return __builtin_aarch64_qtbx1v8qi_uuuu (__r, __temp, __idx);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline poly8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqz_u32 (uint32x2_t __a)\n+vtbx2_p8 (poly8x8_t __r, poly8x8x2_t __tab, uint8x8_t __idx)\n {\n- return (__a == 0);\n+ poly8x16_t __temp = vcombine_p8 (__tab.val[0], __tab.val[1]);\n+ return __builtin_aarch64_qtbx1v8qi_pppu (__r, __temp, __idx);\n }\n \n-__extension__ extern __inline uint64x1_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqz_u64 (uint64x1_t __a)\n-{\n- return (__a == __AARCH64_UINT64_C (0));\n-}\n+/* End of temporary inline asm. */\n \n-__extension__ extern __inline uint64x1_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqz_p64 (poly64x1_t __a)\n-{\n- return (__a == __AARCH64_UINT64_C (0));\n-}\n+/* Start of optimal implementations in approved order. */\n \n-__extension__ extern __inline uint32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqzq_f32 (float32x4_t __a)\n-{\n- return (uint32x4_t) (__a == 0.0f);\n-}\n+/* vabd. */\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline float32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqzq_f64 (float64x2_t __a)\n+vabds_f32 (float32_t __a, float32_t __b)\n {\n- return (uint64x2_t) (__a == 0.0f);\n+ return __builtin_aarch64_fabdsf (__a, __b);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline float64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqzq_p8 (poly8x16_t __a)\n+vabdd_f64 (float64_t __a, float64_t __b)\n {\n- return (uint8x16_t) (__a == 0);\n+ return __builtin_aarch64_fabddf (__a, __b);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline float32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqzq_s8 (int8x16_t __a)\n+vabd_f32 (float32x2_t __a, float32x2_t __b)\n {\n- return (uint8x16_t) (__a == 0);\n+ return __builtin_aarch64_fabdv2sf (__a, __b);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline float64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqzq_s16 (int16x8_t __a)\n+vabd_f64 (float64x1_t __a, float64x1_t __b)\n {\n- return (uint16x8_t) (__a == 0);\n+ return (float64x1_t) {vabdd_f64 (vget_lane_f64 (__a, 0),\n+\t\t\t\t vget_lane_f64 (__b, 0))};\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline float32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqzq_s32 (int32x4_t __a)\n+vabdq_f32 (float32x4_t __a, float32x4_t __b)\n {\n- return (uint32x4_t) (__a == 0);\n+ return __builtin_aarch64_fabdv4sf (__a, __b);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline float64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqzq_s64 (int64x2_t __a)\n+vabdq_f64 (float64x2_t __a, float64x2_t __b)\n {\n- return (uint64x2_t) (__a == __AARCH64_INT64_C (0));\n+ return __builtin_aarch64_fabdv2df (__a, __b);\n }\n \n-__extension__ extern __inline uint8x16_t\n+/* vabs */\n+\n+__extension__ extern __inline float32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqzq_u8 (uint8x16_t __a)\n+vabs_f32 (float32x2_t __a)\n {\n- return (__a == 0);\n+ return __builtin_aarch64_absv2sf (__a);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline float64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqzq_u16 (uint16x8_t __a)\n+vabs_f64 (float64x1_t __a)\n {\n- return (__a == 0);\n+ return (float64x1_t) {__builtin_fabs (__a[0])};\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqzq_u32 (uint32x4_t __a)\n+vabs_s8 (int8x8_t __a)\n {\n- return (__a == 0);\n+ return __builtin_aarch64_absv8qi (__a);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqzq_u64 (uint64x2_t __a)\n+vabs_s16 (int16x4_t __a)\n {\n- return (__a == __AARCH64_UINT64_C (0));\n+ return __builtin_aarch64_absv4hi (__a);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqzq_p64 (poly64x2_t __a)\n+vabs_s32 (int32x2_t __a)\n {\n- return (__a == __AARCH64_UINT64_C (0));\n+ return __builtin_aarch64_absv2si (__a);\n }\n \n-/* vceqz - scalar. */\n-\n-__extension__ extern __inline uint32_t\n+__extension__ extern __inline int64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqzs_f32 (float32_t __a)\n+vabs_s64 (int64x1_t __a)\n {\n- return __a == 0.0f ? -1 : 0;\n+ return (int64x1_t) {__builtin_aarch64_absdi (__a[0])};\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline float32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqzd_s64 (int64_t __a)\n+vabsq_f32 (float32x4_t __a)\n {\n- return __a == 0 ? -1ll : 0ll;\n+ return __builtin_aarch64_absv4sf (__a);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline float64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqzd_u64 (uint64_t __a)\n+vabsq_f64 (float64x2_t __a)\n {\n- return __a == 0 ? -1ll : 0ll;\n+ return __builtin_aarch64_absv2df (__a);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline int8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vceqzd_f64 (float64_t __a)\n+vabsq_s8 (int8x16_t __a)\n {\n- return __a == 0.0 ? -1ll : 0ll;\n+ return __builtin_aarch64_absv16qi (__a);\n }\n \n-/* vcge - vector. */\n-\n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcge_f32 (float32x2_t __a, float32x2_t __b)\n+vabsq_s16 (int16x8_t __a)\n {\n- return (uint32x2_t) (__a >= __b);\n+ return __builtin_aarch64_absv8hi (__a);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcge_f64 (float64x1_t __a, float64x1_t __b)\n+vabsq_s32 (int32x4_t __a)\n {\n- return (uint64x1_t) (__a >= __b);\n+ return __builtin_aarch64_absv4si (__a);\n }\n \n-__extension__ extern __inline uint8x8_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcge_s8 (int8x8_t __a, int8x8_t __b)\n+vabsq_s64 (int64x2_t __a)\n {\n- return (uint8x8_t) (__a >= __b);\n+ return __builtin_aarch64_absv2di (__a);\n }\n \n-__extension__ extern __inline uint16x4_t\n+/* Try to avoid moving between integer and vector registers.\n+ For why the cast to unsigned is needed check the vnegd_s64 intrinsic.\n+ There is a testcase related to this issue:\n+ gcc.target/aarch64/vabsd_s64.c. */\n+\n+__extension__ extern __inline int64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcge_s16 (int16x4_t __a, int16x4_t __b)\n+vabsd_s64 (int64_t __a)\n {\n- return (uint16x4_t) (__a >= __b);\n+ return __a < 0 ? - (uint64_t) __a : __a;\n }\n \n-__extension__ extern __inline uint32x2_t\n+/* vadd */\n+\n+__extension__ extern __inline int64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcge_s32 (int32x2_t __a, int32x2_t __b)\n+vaddd_s64 (int64_t __a, int64_t __b)\n {\n- return (uint32x2_t) (__a >= __b);\n+ return __a + __b;\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcge_s64 (int64x1_t __a, int64x1_t __b)\n+vaddd_u64 (uint64_t __a, uint64_t __b)\n {\n- return (uint64x1_t) (__a >= __b);\n+ return __a + __b;\n }\n \n-__extension__ extern __inline uint8x8_t\n+/* vaddv */\n+\n+__extension__ extern __inline int8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcge_u8 (uint8x8_t __a, uint8x8_t __b)\n+vaddv_s8 (int8x8_t __a)\n {\n- return (__a >= __b);\n+ return __builtin_aarch64_reduc_plus_scal_v8qi (__a);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline int16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcge_u16 (uint16x4_t __a, uint16x4_t __b)\n+vaddv_s16 (int16x4_t __a)\n {\n- return (__a >= __b);\n+ return __builtin_aarch64_reduc_plus_scal_v4hi (__a);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline int32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcge_u32 (uint32x2_t __a, uint32x2_t __b)\n+vaddv_s32 (int32x2_t __a)\n {\n- return (__a >= __b);\n+ return __builtin_aarch64_reduc_plus_scal_v2si (__a);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline uint8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcge_u64 (uint64x1_t __a, uint64x1_t __b)\n+vaddv_u8 (uint8x8_t __a)\n {\n- return (__a >= __b);\n+ return __builtin_aarch64_reduc_plus_scal_v8qi_uu (__a);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline uint16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgeq_f32 (float32x4_t __a, float32x4_t __b)\n+vaddv_u16 (uint16x4_t __a)\n {\n- return (uint32x4_t) (__a >= __b);\n+ return __builtin_aarch64_reduc_plus_scal_v4hi_uu (__a);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgeq_f64 (float64x2_t __a, float64x2_t __b)\n+vaddv_u32 (uint32x2_t __a)\n {\n- return (uint64x2_t) (__a >= __b);\n+ return __builtin_aarch64_reduc_plus_scal_v2si_uu (__a);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline int8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgeq_s8 (int8x16_t __a, int8x16_t __b)\n+vaddvq_s8 (int8x16_t __a)\n {\n- return (uint8x16_t) (__a >= __b);\n+ return __builtin_aarch64_reduc_plus_scal_v16qi (__a);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline int16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgeq_s16 (int16x8_t __a, int16x8_t __b)\n+vaddvq_s16 (int16x8_t __a)\n {\n- return (uint16x8_t) (__a >= __b);\n+ return __builtin_aarch64_reduc_plus_scal_v8hi (__a);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgeq_s32 (int32x4_t __a, int32x4_t __b)\n+vaddvq_s32 (int32x4_t __a)\n {\n- return (uint32x4_t) (__a >= __b);\n+ return __builtin_aarch64_reduc_plus_scal_v4si (__a);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline int64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgeq_s64 (int64x2_t __a, int64x2_t __b)\n+vaddvq_s64 (int64x2_t __a)\n {\n- return (uint64x2_t) (__a >= __b);\n+ return __builtin_aarch64_reduc_plus_scal_v2di (__a);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline uint8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgeq_u8 (uint8x16_t __a, uint8x16_t __b)\n+vaddvq_u8 (uint8x16_t __a)\n {\n- return (__a >= __b);\n+ return __builtin_aarch64_reduc_plus_scal_v16qi_uu (__a);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline uint16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgeq_u16 (uint16x8_t __a, uint16x8_t __b)\n+vaddvq_u16 (uint16x8_t __a)\n {\n- return (__a >= __b);\n+ return __builtin_aarch64_reduc_plus_scal_v8hi_uu (__a);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgeq_u32 (uint32x4_t __a, uint32x4_t __b)\n+vaddvq_u32 (uint32x4_t __a)\n {\n- return (__a >= __b);\n+ return __builtin_aarch64_reduc_plus_scal_v4si_uu (__a);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgeq_u64 (uint64x2_t __a, uint64x2_t __b)\n+vaddvq_u64 (uint64x2_t __a)\n {\n- return (__a >= __b);\n+ return __builtin_aarch64_reduc_plus_scal_v2di_uu (__a);\n }\n \n-/* vcge - scalar. */\n-\n-__extension__ extern __inline uint32_t\n+__extension__ extern __inline float32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcges_f32 (float32_t __a, float32_t __b)\n+vaddv_f32 (float32x2_t __a)\n {\n- return __a >= __b ? -1 : 0;\n+ return __builtin_aarch64_reduc_plus_scal_v2sf (__a);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline float32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcged_s64 (int64_t __a, int64_t __b)\n+vaddvq_f32 (float32x4_t __a)\n {\n- return __a >= __b ? -1ll : 0ll;\n+ return __builtin_aarch64_reduc_plus_scal_v4sf (__a);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline float64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcged_u64 (uint64_t __a, uint64_t __b)\n+vaddvq_f64 (float64x2_t __a)\n {\n- return __a >= __b ? -1ll : 0ll;\n+ return __builtin_aarch64_reduc_plus_scal_v2df (__a);\n }\n \n-__extension__ extern __inline uint64_t\n+/* vbsl */\n+\n+__extension__ extern __inline float16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcged_f64 (float64_t __a, float64_t __b)\n+vbsl_f16 (uint16x4_t __a, float16x4_t __b, float16x4_t __c)\n {\n- return __a >= __b ? -1ll : 0ll;\n+ return __builtin_aarch64_simd_bslv4hf_suss (__a, __b, __c);\n }\n \n-/* vcgez - vector. */\n-\n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline float32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgez_f32 (float32x2_t __a)\n+vbsl_f32 (uint32x2_t __a, float32x2_t __b, float32x2_t __c)\n {\n- return (uint32x2_t) (__a >= 0.0f);\n+ return __builtin_aarch64_simd_bslv2sf_suss (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline float64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgez_f64 (float64x1_t __a)\n+vbsl_f64 (uint64x1_t __a, float64x1_t __b, float64x1_t __c)\n {\n- return (uint64x1_t) (__a[0] >= (float64x1_t) {0.0});\n+ return (float64x1_t)\n+ { __builtin_aarch64_simd_bsldf_suss (__a[0], __b[0], __c[0]) };\n }\n \n-__extension__ extern __inline uint8x8_t\n+__extension__ extern __inline poly8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgez_s8 (int8x8_t __a)\n+vbsl_p8 (uint8x8_t __a, poly8x8_t __b, poly8x8_t __c)\n {\n- return (uint8x8_t) (__a >= 0);\n+ return __builtin_aarch64_simd_bslv8qi_pupp (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline poly16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgez_s16 (int16x4_t __a)\n+vbsl_p16 (uint16x4_t __a, poly16x4_t __b, poly16x4_t __c)\n {\n- return (uint16x4_t) (__a >= 0);\n+ return __builtin_aarch64_simd_bslv4hi_pupp (__a, __b, __c);\n }\n-\n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline poly64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgez_s32 (int32x2_t __a)\n+vbsl_p64 (uint64x1_t __a, poly64x1_t __b, poly64x1_t __c)\n {\n- return (uint32x2_t) (__a >= 0);\n+ return (poly64x1_t)\n+ {__builtin_aarch64_simd_bsldi_pupp (__a[0], __b[0], __c[0])};\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline int8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgez_s64 (int64x1_t __a)\n+vbsl_s8 (uint8x8_t __a, int8x8_t __b, int8x8_t __c)\n {\n- return (uint64x1_t) (__a >= __AARCH64_INT64_C (0));\n+ return __builtin_aarch64_simd_bslv8qi_suss (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgezq_f32 (float32x4_t __a)\n+vbsl_s16 (uint16x4_t __a, int16x4_t __b, int16x4_t __c)\n {\n- return (uint32x4_t) (__a >= 0.0f);\n+ return __builtin_aarch64_simd_bslv4hi_suss (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgezq_f64 (float64x2_t __a)\n+vbsl_s32 (uint32x2_t __a, int32x2_t __b, int32x2_t __c)\n {\n- return (uint64x2_t) (__a >= 0.0);\n+ return __builtin_aarch64_simd_bslv2si_suss (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline int64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgezq_s8 (int8x16_t __a)\n+vbsl_s64 (uint64x1_t __a, int64x1_t __b, int64x1_t __c)\n {\n- return (uint8x16_t) (__a >= 0);\n+ return (int64x1_t)\n+ {__builtin_aarch64_simd_bsldi_suss (__a[0], __b[0], __c[0])};\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgezq_s16 (int16x8_t __a)\n+vbsl_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)\n {\n- return (uint16x8_t) (__a >= 0);\n+ return __builtin_aarch64_simd_bslv8qi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgezq_s32 (int32x4_t __a)\n+vbsl_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)\n {\n- return (uint32x4_t) (__a >= 0);\n+ return __builtin_aarch64_simd_bslv4hi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgezq_s64 (int64x2_t __a)\n+vbsl_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)\n {\n- return (uint64x2_t) (__a >= __AARCH64_INT64_C (0));\n+ return __builtin_aarch64_simd_bslv2si_uuuu (__a, __b, __c);\n }\n \n-/* vcgez - scalar. */\n-\n-__extension__ extern __inline uint32_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgezs_f32 (float32_t __a)\n+vbsl_u64 (uint64x1_t __a, uint64x1_t __b, uint64x1_t __c)\n {\n- return __a >= 0.0f ? -1 : 0;\n+ return (uint64x1_t)\n+ {__builtin_aarch64_simd_bsldi_uuuu (__a[0], __b[0], __c[0])};\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline float16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgezd_s64 (int64_t __a)\n+vbslq_f16 (uint16x8_t __a, float16x8_t __b, float16x8_t __c)\n {\n- return __a >= 0 ? -1ll : 0ll;\n+ return __builtin_aarch64_simd_bslv8hf_suss (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline float32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgezd_f64 (float64_t __a)\n+vbslq_f32 (uint32x4_t __a, float32x4_t __b, float32x4_t __c)\n {\n- return __a >= 0.0 ? -1ll : 0ll;\n+ return __builtin_aarch64_simd_bslv4sf_suss (__a, __b, __c);\n }\n \n-/* vcgt - vector. */\n-\n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline float64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgt_f32 (float32x2_t __a, float32x2_t __b)\n+vbslq_f64 (uint64x2_t __a, float64x2_t __b, float64x2_t __c)\n {\n- return (uint32x2_t) (__a > __b);\n+ return __builtin_aarch64_simd_bslv2df_suss (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline poly8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgt_f64 (float64x1_t __a, float64x1_t __b)\n+vbslq_p8 (uint8x16_t __a, poly8x16_t __b, poly8x16_t __c)\n {\n- return (uint64x1_t) (__a > __b);\n+ return __builtin_aarch64_simd_bslv16qi_pupp (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint8x8_t\n+__extension__ extern __inline poly16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgt_s8 (int8x8_t __a, int8x8_t __b)\n+vbslq_p16 (uint16x8_t __a, poly16x8_t __b, poly16x8_t __c)\n {\n- return (uint8x8_t) (__a > __b);\n+ return __builtin_aarch64_simd_bslv8hi_pupp (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline int8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgt_s16 (int16x4_t __a, int16x4_t __b)\n+vbslq_s8 (uint8x16_t __a, int8x16_t __b, int8x16_t __c)\n {\n- return (uint16x4_t) (__a > __b);\n+ return __builtin_aarch64_simd_bslv16qi_suss (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgt_s32 (int32x2_t __a, int32x2_t __b)\n+vbslq_s16 (uint16x8_t __a, int16x8_t __b, int16x8_t __c)\n {\n- return (uint32x2_t) (__a > __b);\n+ return __builtin_aarch64_simd_bslv8hi_suss (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline poly64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgt_s64 (int64x1_t __a, int64x1_t __b)\n+vbslq_p64 (uint64x2_t __a, poly64x2_t __b, poly64x2_t __c)\n {\n- return (uint64x1_t) (__a > __b);\n+ return __builtin_aarch64_simd_bslv2di_pupp (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint8x8_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgt_u8 (uint8x8_t __a, uint8x8_t __b)\n+vbslq_s32 (uint32x4_t __a, int32x4_t __b, int32x4_t __c)\n {\n- return (__a > __b);\n+ return __builtin_aarch64_simd_bslv4si_suss (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgt_u16 (uint16x4_t __a, uint16x4_t __b)\n+vbslq_s64 (uint64x2_t __a, int64x2_t __b, int64x2_t __c)\n {\n- return (__a > __b);\n+ return __builtin_aarch64_simd_bslv2di_suss (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgt_u32 (uint32x2_t __a, uint32x2_t __b)\n+vbslq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)\n {\n- return (__a > __b);\n+ return __builtin_aarch64_simd_bslv16qi_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgt_u64 (uint64x1_t __a, uint64x1_t __b)\n+vbslq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)\n {\n- return (__a > __b);\n+ return __builtin_aarch64_simd_bslv8hi_uuuu (__a, __b, __c);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtq_f32 (float32x4_t __a, float32x4_t __b)\n+vbslq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)\n {\n- return (uint32x4_t) (__a > __b);\n+ return __builtin_aarch64_simd_bslv4si_uuuu (__a, __b, __c);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtq_f64 (float64x2_t __a, float64x2_t __b)\n+vbslq_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c)\n {\n- return (uint64x2_t) (__a > __b);\n+ return __builtin_aarch64_simd_bslv2di_uuuu (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint8x16_t\n+/* ARMv8.1-A instrinsics. */\n+#pragma GCC push_options\n+#pragma GCC target (\"+nothing+rdma\")\n+\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtq_s8 (int8x16_t __a, int8x16_t __b)\n+vqrdmlah_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)\n {\n- return (uint8x16_t) (__a > __b);\n+ return __builtin_aarch64_sqrdmlahv4hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtq_s16 (int16x8_t __a, int16x8_t __b)\n+vqrdmlah_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)\n {\n- return (uint16x8_t) (__a > __b);\n+ return __builtin_aarch64_sqrdmlahv2si (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtq_s32 (int32x4_t __a, int32x4_t __b)\n+vqrdmlahq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)\n {\n- return (uint32x4_t) (__a > __b);\n+ return __builtin_aarch64_sqrdmlahv8hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtq_s64 (int64x2_t __a, int64x2_t __b)\n+vqrdmlahq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)\n {\n- return (uint64x2_t) (__a > __b);\n+ return __builtin_aarch64_sqrdmlahv4si (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtq_u8 (uint8x16_t __a, uint8x16_t __b)\n+vqrdmlsh_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)\n {\n- return (__a > __b);\n+ return __builtin_aarch64_sqrdmlshv4hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtq_u16 (uint16x8_t __a, uint16x8_t __b)\n+vqrdmlsh_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)\n {\n- return (__a > __b);\n+ return __builtin_aarch64_sqrdmlshv2si (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtq_u32 (uint32x4_t __a, uint32x4_t __b)\n+vqrdmlshq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)\n {\n- return (__a > __b);\n+ return __builtin_aarch64_sqrdmlshv8hi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtq_u64 (uint64x2_t __a, uint64x2_t __b)\n+vqrdmlshq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)\n {\n- return (__a > __b);\n+ return __builtin_aarch64_sqrdmlshv4si (__a, __b, __c);\n }\n \n-/* vcgt - scalar. */\n-\n-__extension__ extern __inline uint32_t\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgts_f32 (float32_t __a, float32_t __b)\n+vqrdmlah_laneq_s16 (int16x4_t __a, int16x4_t __b, int16x8_t __c, const int __d)\n {\n- return __a > __b ? -1 : 0;\n+ return __builtin_aarch64_sqrdmlah_laneqv4hi (__a, __b, __c, __d);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtd_s64 (int64_t __a, int64_t __b)\n+vqrdmlah_laneq_s32 (int32x2_t __a, int32x2_t __b, int32x4_t __c, const int __d)\n {\n- return __a > __b ? -1ll : 0ll;\n+ return __builtin_aarch64_sqrdmlah_laneqv2si (__a, __b, __c, __d);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtd_u64 (uint64_t __a, uint64_t __b)\n+vqrdmlahq_laneq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c, const int __d)\n {\n- return __a > __b ? -1ll : 0ll;\n+ return __builtin_aarch64_sqrdmlah_laneqv8hi (__a, __b, __c, __d);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtd_f64 (float64_t __a, float64_t __b)\n+vqrdmlahq_laneq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c, const int __d)\n {\n- return __a > __b ? -1ll : 0ll;\n+ return __builtin_aarch64_sqrdmlah_laneqv4si (__a, __b, __c, __d);\n }\n \n-/* vcgtz - vector. */\n+__extension__ extern __inline int16x4_t\n+__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n+vqrdmlsh_laneq_s16 (int16x4_t __a, int16x4_t __b, int16x8_t __c, const int __d)\n+{\n+ return __builtin_aarch64_sqrdmlsh_laneqv4hi (__a, __b, __c, __d);\n+}\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtz_f32 (float32x2_t __a)\n+vqrdmlsh_laneq_s32 (int32x2_t __a, int32x2_t __b, int32x4_t __c, const int __d)\n {\n- return (uint32x2_t) (__a > 0.0f);\n+ return __builtin_aarch64_sqrdmlsh_laneqv2si (__a, __b, __c, __d);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtz_f64 (float64x1_t __a)\n+vqrdmlshq_laneq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c, const int __d)\n {\n- return (uint64x1_t) (__a > (float64x1_t) {0.0});\n+ return __builtin_aarch64_sqrdmlsh_laneqv8hi (__a, __b, __c, __d);\n }\n \n-__extension__ extern __inline uint8x8_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtz_s8 (int8x8_t __a)\n+vqrdmlshq_laneq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c, const int __d)\n {\n- return (uint8x8_t) (__a > 0);\n+ return __builtin_aarch64_sqrdmlsh_laneqv4si (__a, __b, __c, __d);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtz_s16 (int16x4_t __a)\n+vqrdmlah_lane_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)\n {\n- return (uint16x4_t) (__a > 0);\n+ return __builtin_aarch64_sqrdmlah_lanev4hi (__a, __b, __c, __d);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtz_s32 (int32x2_t __a)\n+vqrdmlah_lane_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)\n {\n- return (uint32x2_t) (__a > 0);\n+ return __builtin_aarch64_sqrdmlah_lanev2si (__a, __b, __c, __d);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtz_s64 (int64x1_t __a)\n+vqrdmlahq_lane_s16 (int16x8_t __a, int16x8_t __b, int16x4_t __c, const int __d)\n {\n- return (uint64x1_t) (__a > __AARCH64_INT64_C (0));\n+ return __builtin_aarch64_sqrdmlah_lanev8hi (__a, __b, __c, __d);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtzq_f32 (float32x4_t __a)\n+vqrdmlahq_lane_s32 (int32x4_t __a, int32x4_t __b, int32x2_t __c, const int __d)\n {\n- return (uint32x4_t) (__a > 0.0f);\n+ return __builtin_aarch64_sqrdmlah_lanev4si (__a, __b, __c, __d);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline int16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtzq_f64 (float64x2_t __a)\n+vqrdmlahh_s16 (int16_t __a, int16_t __b, int16_t __c)\n {\n- return (uint64x2_t) (__a > 0.0);\n+ return (int16_t) __builtin_aarch64_sqrdmlahhi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline int16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtzq_s8 (int8x16_t __a)\n+vqrdmlahh_lane_s16 (int16_t __a, int16_t __b, int16x4_t __c, const int __d)\n {\n- return (uint8x16_t) (__a > 0);\n+ return __builtin_aarch64_sqrdmlah_lanehi (__a, __b, __c, __d);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline int16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtzq_s16 (int16x8_t __a)\n+vqrdmlahh_laneq_s16 (int16_t __a, int16_t __b, int16x8_t __c, const int __d)\n {\n- return (uint16x8_t) (__a > 0);\n+ return __builtin_aarch64_sqrdmlah_laneqhi (__a, __b, __c, __d);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtzq_s32 (int32x4_t __a)\n+vqrdmlahs_s32 (int32_t __a, int32_t __b, int32_t __c)\n {\n- return (uint32x4_t) (__a > 0);\n+ return (int32_t) __builtin_aarch64_sqrdmlahsi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline int32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtzq_s64 (int64x2_t __a)\n+vqrdmlahs_lane_s32 (int32_t __a, int32_t __b, int32x2_t __c, const int __d)\n {\n- return (uint64x2_t) (__a > __AARCH64_INT64_C (0));\n+ return __builtin_aarch64_sqrdmlah_lanesi (__a, __b, __c, __d);\n }\n \n-/* vcgtz - scalar. */\n-\n-__extension__ extern __inline uint32_t\n+__extension__ extern __inline int32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtzs_f32 (float32_t __a)\n+vqrdmlahs_laneq_s32 (int32_t __a, int32_t __b, int32x4_t __c, const int __d)\n {\n- return __a > 0.0f ? -1 : 0;\n+ return __builtin_aarch64_sqrdmlah_laneqsi (__a, __b, __c, __d);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtzd_s64 (int64_t __a)\n+vqrdmlsh_lane_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)\n {\n- return __a > 0 ? -1ll : 0ll;\n+ return __builtin_aarch64_sqrdmlsh_lanev4hi (__a, __b, __c, __d);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcgtzd_f64 (float64_t __a)\n+vqrdmlsh_lane_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)\n {\n- return __a > 0.0 ? -1ll : 0ll;\n+ return __builtin_aarch64_sqrdmlsh_lanev2si (__a, __b, __c, __d);\n }\n \n-/* vcle - vector. */\n-\n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcle_f32 (float32x2_t __a, float32x2_t __b)\n+vqrdmlshq_lane_s16 (int16x8_t __a, int16x8_t __b, int16x4_t __c, const int __d)\n {\n- return (uint32x2_t) (__a <= __b);\n+ return __builtin_aarch64_sqrdmlsh_lanev8hi (__a, __b, __c, __d);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcle_f64 (float64x1_t __a, float64x1_t __b)\n+vqrdmlshq_lane_s32 (int32x4_t __a, int32x4_t __b, int32x2_t __c, const int __d)\n {\n- return (uint64x1_t) (__a <= __b);\n+ return __builtin_aarch64_sqrdmlsh_lanev4si (__a, __b, __c, __d);\n }\n \n-__extension__ extern __inline uint8x8_t\n+__extension__ extern __inline int16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcle_s8 (int8x8_t __a, int8x8_t __b)\n+vqrdmlshh_s16 (int16_t __a, int16_t __b, int16_t __c)\n {\n- return (uint8x8_t) (__a <= __b);\n+ return (int16_t) __builtin_aarch64_sqrdmlshhi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline int16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcle_s16 (int16x4_t __a, int16x4_t __b)\n+vqrdmlshh_lane_s16 (int16_t __a, int16_t __b, int16x4_t __c, const int __d)\n {\n- return (uint16x4_t) (__a <= __b);\n+ return __builtin_aarch64_sqrdmlsh_lanehi (__a, __b, __c, __d);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline int16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcle_s32 (int32x2_t __a, int32x2_t __b)\n+vqrdmlshh_laneq_s16 (int16_t __a, int16_t __b, int16x8_t __c, const int __d)\n {\n- return (uint32x2_t) (__a <= __b);\n+ return __builtin_aarch64_sqrdmlsh_laneqhi (__a, __b, __c, __d);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline int32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcle_s64 (int64x1_t __a, int64x1_t __b)\n+vqrdmlshs_s32 (int32_t __a, int32_t __b, int32_t __c)\n {\n- return (uint64x1_t) (__a <= __b);\n+ return (int32_t) __builtin_aarch64_sqrdmlshsi (__a, __b, __c);\n }\n \n-__extension__ extern __inline uint8x8_t\n+__extension__ extern __inline int32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcle_u8 (uint8x8_t __a, uint8x8_t __b)\n+vqrdmlshs_lane_s32 (int32_t __a, int32_t __b, int32x2_t __c, const int __d)\n {\n- return (__a <= __b);\n+ return __builtin_aarch64_sqrdmlsh_lanesi (__a, __b, __c, __d);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline int32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcle_u16 (uint16x4_t __a, uint16x4_t __b)\n+vqrdmlshs_laneq_s32 (int32_t __a, int32_t __b, int32x4_t __c, const int __d)\n {\n- return (__a <= __b);\n+ return __builtin_aarch64_sqrdmlsh_laneqsi (__a, __b, __c, __d);\n }\n+#pragma GCC pop_options\n \n-__extension__ extern __inline uint32x2_t\n+#pragma GCC push_options\n+#pragma GCC target (\"+nothing+aes\")\n+/* vaes */\n+\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcle_u32 (uint32x2_t __a, uint32x2_t __b)\n+vaeseq_u8 (uint8x16_t data, uint8x16_t key)\n {\n- return (__a <= __b);\n+ return __builtin_aarch64_crypto_aesev16qi_uuu (data, key);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcle_u64 (uint64x1_t __a, uint64x1_t __b)\n+vaesdq_u8 (uint8x16_t data, uint8x16_t key)\n {\n- return (__a <= __b);\n+ return __builtin_aarch64_crypto_aesdv16qi_uuu (data, key);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcleq_f32 (float32x4_t __a, float32x4_t __b)\n+vaesmcq_u8 (uint8x16_t data)\n {\n- return (uint32x4_t) (__a <= __b);\n+ return __builtin_aarch64_crypto_aesmcv16qi_uu (data);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcleq_f64 (float64x2_t __a, float64x2_t __b)\n+vaesimcq_u8 (uint8x16_t data)\n {\n- return (uint64x2_t) (__a <= __b);\n+ return __builtin_aarch64_crypto_aesimcv16qi_uu (data);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline poly128_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcleq_s8 (int8x16_t __a, int8x16_t __b)\n+vmull_p64 (poly64_t __a, poly64_t __b)\n {\n- return (uint8x16_t) (__a <= __b);\n+ return\n+ __builtin_aarch64_crypto_pmulldi_ppp (__a, __b);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline poly128_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcleq_s16 (int16x8_t __a, int16x8_t __b)\n+vmull_high_p64 (poly64x2_t __a, poly64x2_t __b)\n {\n- return (uint16x8_t) (__a <= __b);\n+ return __builtin_aarch64_crypto_pmullv2di_ppp (__a, __b);\n }\n \n-__extension__ extern __inline uint32x4_t\n+#pragma GCC pop_options\n+\n+/* vcage */\n+\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcleq_s32 (int32x4_t __a, int32x4_t __b)\n+vcage_f64 (float64x1_t __a, float64x1_t __b)\n {\n- return (uint32x4_t) (__a <= __b);\n+ return vcreate_u64 (__builtin_aarch64_facgedf_uss (__a[0], __b[0]));\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcleq_s64 (int64x2_t __a, int64x2_t __b)\n+vcages_f32 (float32_t __a, float32_t __b)\n {\n- return (uint64x2_t) (__a <= __b);\n+ return __builtin_aarch64_facgesf_uss (__a, __b);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcleq_u8 (uint8x16_t __a, uint8x16_t __b)\n+vcage_f32 (float32x2_t __a, float32x2_t __b)\n {\n- return (__a <= __b);\n+ return __builtin_aarch64_facgev2sf_uss (__a, __b);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcleq_u16 (uint16x8_t __a, uint16x8_t __b)\n+vcageq_f32 (float32x4_t __a, float32x4_t __b)\n {\n- return (__a <= __b);\n+ return __builtin_aarch64_facgev4sf_uss (__a, __b);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcleq_u32 (uint32x4_t __a, uint32x4_t __b)\n+vcaged_f64 (float64_t __a, float64_t __b)\n {\n- return (__a <= __b);\n+ return __builtin_aarch64_facgedf_uss (__a, __b);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcleq_u64 (uint64x2_t __a, uint64x2_t __b)\n+vcageq_f64 (float64x2_t __a, float64x2_t __b)\n {\n- return (__a <= __b);\n+ return __builtin_aarch64_facgev2df_uss (__a, __b);\n }\n \n-/* vcle - scalar. */\n+/* vcagt */\n \n __extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcles_f32 (float32_t __a, float32_t __b)\n+vcagts_f32 (float32_t __a, float32_t __b)\n {\n- return __a <= __b ? -1 : 0;\n+ return __builtin_aarch64_facgtsf_uss (__a, __b);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcled_s64 (int64_t __a, int64_t __b)\n+vcagt_f32 (float32x2_t __a, float32x2_t __b)\n {\n- return __a <= __b ? -1ll : 0ll;\n+ return __builtin_aarch64_facgtv2sf_uss (__a, __b);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcled_u64 (uint64_t __a, uint64_t __b)\n+vcagt_f64 (float64x1_t __a, float64x1_t __b)\n {\n- return __a <= __b ? -1ll : 0ll;\n+ return vcreate_u64 (__builtin_aarch64_facgtdf_uss (__a[0], __b[0]));\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcled_f64 (float64_t __a, float64_t __b)\n+vcagtq_f32 (float32x4_t __a, float32x4_t __b)\n {\n- return __a <= __b ? -1ll : 0ll;\n+ return __builtin_aarch64_facgtv4sf_uss (__a, __b);\n }\n \n-/* vclez - vector. */\n-\n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclez_f32 (float32x2_t __a)\n+vcagtd_f64 (float64_t __a, float64_t __b)\n {\n- return (uint32x2_t) (__a <= 0.0f);\n+ return __builtin_aarch64_facgtdf_uss (__a, __b);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclez_f64 (float64x1_t __a)\n+vcagtq_f64 (float64x2_t __a, float64x2_t __b)\n {\n- return (uint64x1_t) (__a <= (float64x1_t) {0.0});\n+ return __builtin_aarch64_facgtv2df_uss (__a, __b);\n }\n \n-__extension__ extern __inline uint8x8_t\n+/* vcale */\n+\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclez_s8 (int8x8_t __a)\n+vcale_f32 (float32x2_t __a, float32x2_t __b)\n {\n- return (uint8x8_t) (__a <= 0);\n+ return __builtin_aarch64_faclev2sf_uss (__a, __b);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclez_s16 (int16x4_t __a)\n+vcale_f64 (float64x1_t __a, float64x1_t __b)\n {\n- return (uint16x4_t) (__a <= 0);\n+ return vcreate_u64 (__builtin_aarch64_facledf_uss (__a[0], __b[0]));\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclez_s32 (int32x2_t __a)\n+vcaled_f64 (float64_t __a, float64_t __b)\n {\n- return (uint32x2_t) (__a <= 0);\n+ return __builtin_aarch64_facledf_uss (__a, __b);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclez_s64 (int64x1_t __a)\n+vcales_f32 (float32_t __a, float32_t __b)\n {\n- return (uint64x1_t) (__a <= __AARCH64_INT64_C (0));\n+ return __builtin_aarch64_faclesf_uss (__a, __b);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclezq_f32 (float32x4_t __a)\n+vcaleq_f32 (float32x4_t __a, float32x4_t __b)\n {\n- return (uint32x4_t) (__a <= 0.0f);\n+ return __builtin_aarch64_faclev4sf_uss (__a, __b);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclezq_f64 (float64x2_t __a)\n+vcaleq_f64 (float64x2_t __a, float64x2_t __b)\n {\n- return (uint64x2_t) (__a <= 0.0);\n+ return __builtin_aarch64_faclev2df_uss (__a, __b);\n }\n \n-__extension__ extern __inline uint8x16_t\n+/* vcalt */\n+\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclezq_s8 (int8x16_t __a)\n+vcalt_f32 (float32x2_t __a, float32x2_t __b)\n {\n- return (uint8x16_t) (__a <= 0);\n+ return __builtin_aarch64_facltv2sf_uss (__a, __b);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclezq_s16 (int16x8_t __a)\n+vcalt_f64 (float64x1_t __a, float64x1_t __b)\n {\n- return (uint16x8_t) (__a <= 0);\n+ return vcreate_u64 (__builtin_aarch64_facltdf_uss (__a[0], __b[0]));\n+}\n+\n+__extension__ extern __inline uint64_t\n+__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n+vcaltd_f64 (float64_t __a, float64_t __b)\n+{\n+ return __builtin_aarch64_facltdf_uss (__a, __b);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclezq_s32 (int32x4_t __a)\n+vcaltq_f32 (float32x4_t __a, float32x4_t __b)\n {\n- return (uint32x4_t) (__a <= 0);\n+ return __builtin_aarch64_facltv4sf_uss (__a, __b);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclezq_s64 (int64x2_t __a)\n+vcaltq_f64 (float64x2_t __a, float64x2_t __b)\n {\n- return (uint64x2_t) (__a <= __AARCH64_INT64_C (0));\n+ return __builtin_aarch64_facltv2df_uss (__a, __b);\n }\n \n-/* vclez - scalar. */\n-\n __extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclezs_f32 (float32_t __a)\n+vcalts_f32 (float32_t __a, float32_t __b)\n {\n- return __a <= 0.0f ? -1 : 0;\n+ return __builtin_aarch64_facltsf_uss (__a, __b);\n }\n \n-__extension__ extern __inline uint64_t\n+/* vceq - vector. */\n+\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclezd_s64 (int64_t __a)\n+vceq_f32 (float32x2_t __a, float32x2_t __b)\n {\n- return __a <= 0 ? -1ll : 0ll;\n+ return (uint32x2_t) (__a == __b);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclezd_f64 (float64_t __a)\n+vceq_f64 (float64x1_t __a, float64x1_t __b)\n {\n- return __a <= 0.0 ? -1ll : 0ll;\n+ return (uint64x1_t) (__a == __b);\n }\n \n-/* vclt - vector. */\n-\n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclt_f32 (float32x2_t __a, float32x2_t __b)\n+vceq_p8 (poly8x8_t __a, poly8x8_t __b)\n {\n- return (uint32x2_t) (__a < __b);\n+ return (uint8x8_t) (__a == __b);\n }\n \n __extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclt_f64 (float64x1_t __a, float64x1_t __b)\n+vceq_p64 (poly64x1_t __a, poly64x1_t __b)\n {\n- return (uint64x1_t) (__a < __b);\n+ return (uint64x1_t) (__a == __b);\n }\n \n __extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclt_s8 (int8x8_t __a, int8x8_t __b)\n+vceq_s8 (int8x8_t __a, int8x8_t __b)\n {\n- return (uint8x8_t) (__a < __b);\n+ return (uint8x8_t) (__a == __b);\n }\n \n __extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclt_s16 (int16x4_t __a, int16x4_t __b)\n+vceq_s16 (int16x4_t __a, int16x4_t __b)\n {\n- return (uint16x4_t) (__a < __b);\n+ return (uint16x4_t) (__a == __b);\n }\n \n __extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclt_s32 (int32x2_t __a, int32x2_t __b)\n+vceq_s32 (int32x2_t __a, int32x2_t __b)\n {\n- return (uint32x2_t) (__a < __b);\n+ return (uint32x2_t) (__a == __b);\n }\n \n __extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclt_s64 (int64x1_t __a, int64x1_t __b)\n+vceq_s64 (int64x1_t __a, int64x1_t __b)\n {\n- return (uint64x1_t) (__a < __b);\n+ return (uint64x1_t) (__a == __b);\n }\n \n __extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclt_u8 (uint8x8_t __a, uint8x8_t __b)\n+vceq_u8 (uint8x8_t __a, uint8x8_t __b)\n {\n- return (__a < __b);\n+ return (__a == __b);\n }\n \n __extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclt_u16 (uint16x4_t __a, uint16x4_t __b)\n+vceq_u16 (uint16x4_t __a, uint16x4_t __b)\n {\n- return (__a < __b);\n+ return (__a == __b);\n }\n \n __extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclt_u32 (uint32x2_t __a, uint32x2_t __b)\n+vceq_u32 (uint32x2_t __a, uint32x2_t __b)\n {\n- return (__a < __b);\n+ return (__a == __b);\n }\n \n __extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclt_u64 (uint64x1_t __a, uint64x1_t __b)\n+vceq_u64 (uint64x1_t __a, uint64x1_t __b)\n {\n- return (__a < __b);\n+ return (__a == __b);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltq_f32 (float32x4_t __a, float32x4_t __b)\n+vceqq_f32 (float32x4_t __a, float32x4_t __b)\n {\n- return (uint32x4_t) (__a < __b);\n+ return (uint32x4_t) (__a == __b);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltq_f64 (float64x2_t __a, float64x2_t __b)\n+vceqq_f64 (float64x2_t __a, float64x2_t __b)\n {\n- return (uint64x2_t) (__a < __b);\n+ return (uint64x2_t) (__a == __b);\n }\n \n __extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltq_s8 (int8x16_t __a, int8x16_t __b)\n+vceqq_p8 (poly8x16_t __a, poly8x16_t __b)\n {\n- return (uint8x16_t) (__a < __b);\n+ return (uint8x16_t) (__a == __b);\n+}\n+\n+__extension__ extern __inline uint8x16_t\n+__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n+vceqq_s8 (int8x16_t __a, int8x16_t __b)\n+{\n+ return (uint8x16_t) (__a == __b);\n }\n \n __extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltq_s16 (int16x8_t __a, int16x8_t __b)\n+vceqq_s16 (int16x8_t __a, int16x8_t __b)\n {\n- return (uint16x8_t) (__a < __b);\n+ return (uint16x8_t) (__a == __b);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltq_s32 (int32x4_t __a, int32x4_t __b)\n+vceqq_s32 (int32x4_t __a, int32x4_t __b)\n {\n- return (uint32x4_t) (__a < __b);\n+ return (uint32x4_t) (__a == __b);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltq_s64 (int64x2_t __a, int64x2_t __b)\n+vceqq_s64 (int64x2_t __a, int64x2_t __b)\n {\n- return (uint64x2_t) (__a < __b);\n+ return (uint64x2_t) (__a == __b);\n }\n \n __extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltq_u8 (uint8x16_t __a, uint8x16_t __b)\n+vceqq_u8 (uint8x16_t __a, uint8x16_t __b)\n {\n- return (__a < __b);\n+ return (__a == __b);\n }\n \n __extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltq_u16 (uint16x8_t __a, uint16x8_t __b)\n+vceqq_u16 (uint16x8_t __a, uint16x8_t __b)\n {\n- return (__a < __b);\n+ return (__a == __b);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltq_u32 (uint32x4_t __a, uint32x4_t __b)\n+vceqq_u32 (uint32x4_t __a, uint32x4_t __b)\n {\n- return (__a < __b);\n+ return (__a == __b);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltq_u64 (uint64x2_t __a, uint64x2_t __b)\n+vceqq_u64 (uint64x2_t __a, uint64x2_t __b)\n {\n- return (__a < __b);\n+ return (__a == __b);\n }\n \n-/* vclt - scalar. */\n+__extension__ extern __inline uint64x2_t\n+__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n+vceqq_p64 (poly64x2_t __a, poly64x2_t __b)\n+{\n+ return (__a == __b);\n+}\n+\n+/* vceq - scalar. */\n \n __extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclts_f32 (float32_t __a, float32_t __b)\n+vceqs_f32 (float32_t __a, float32_t __b)\n {\n- return __a < __b ? -1 : 0;\n+ return __a == __b ? -1 : 0;\n }\n \n __extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltd_s64 (int64_t __a, int64_t __b)\n+vceqd_s64 (int64_t __a, int64_t __b)\n {\n- return __a < __b ? -1ll : 0ll;\n+ return __a == __b ? -1ll : 0ll;\n }\n \n __extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltd_u64 (uint64_t __a, uint64_t __b)\n+vceqd_u64 (uint64_t __a, uint64_t __b)\n {\n- return __a < __b ? -1ll : 0ll;\n+ return __a == __b ? -1ll : 0ll;\n }\n \n __extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltd_f64 (float64_t __a, float64_t __b)\n+vceqd_f64 (float64_t __a, float64_t __b)\n {\n- return __a < __b ? -1ll : 0ll;\n+ return __a == __b ? -1ll : 0ll;\n }\n \n-/* vcltz - vector. */\n+/* vceqz - vector. */\n \n __extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltz_f32 (float32x2_t __a)\n+vceqz_f32 (float32x2_t __a)\n {\n- return (uint32x2_t) (__a < 0.0f);\n+ return (uint32x2_t) (__a == 0.0f);\n }\n \n __extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltz_f64 (float64x1_t __a)\n+vceqz_f64 (float64x1_t __a)\n {\n- return (uint64x1_t) (__a < (float64x1_t) {0.0});\n+ return (uint64x1_t) (__a == (float64x1_t) {0.0});\n }\n \n __extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltz_s8 (int8x8_t __a)\n+vceqz_p8 (poly8x8_t __a)\n {\n- return (uint8x8_t) (__a < 0);\n+ return (uint8x8_t) (__a == 0);\n+}\n+\n+__extension__ extern __inline uint8x8_t\n+__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n+vceqz_s8 (int8x8_t __a)\n+{\n+ return (uint8x8_t) (__a == 0);\n }\n \n __extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltz_s16 (int16x4_t __a)\n+vceqz_s16 (int16x4_t __a)\n {\n- return (uint16x4_t) (__a < 0);\n+ return (uint16x4_t) (__a == 0);\n }\n \n __extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltz_s32 (int32x2_t __a)\n+vceqz_s32 (int32x2_t __a)\n {\n- return (uint32x2_t) (__a < 0);\n+ return (uint32x2_t) (__a == 0);\n }\n \n __extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltz_s64 (int64x1_t __a)\n+vceqz_s64 (int64x1_t __a)\n {\n- return (uint64x1_t) (__a < __AARCH64_INT64_C (0));\n+ return (uint64x1_t) (__a == __AARCH64_INT64_C (0));\n+}\n+\n+__extension__ extern __inline uint8x8_t\n+__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n+vceqz_u8 (uint8x8_t __a)\n+{\n+ return (__a == 0);\n+}\n+\n+__extension__ extern __inline uint16x4_t\n+__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n+vceqz_u16 (uint16x4_t __a)\n+{\n+ return (__a == 0);\n+}\n+\n+__extension__ extern __inline uint32x2_t\n+__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n+vceqz_u32 (uint32x2_t __a)\n+{\n+ return (__a == 0);\n+}\n+\n+__extension__ extern __inline uint64x1_t\n+__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n+vceqz_u64 (uint64x1_t __a)\n+{\n+ return (__a == __AARCH64_UINT64_C (0));\n+}\n+\n+__extension__ extern __inline uint64x1_t\n+__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n+vceqz_p64 (poly64x1_t __a)\n+{\n+ return (__a == __AARCH64_UINT64_C (0));\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltzq_f32 (float32x4_t __a)\n+vceqzq_f32 (float32x4_t __a)\n+{\n+ return (uint32x4_t) (__a == 0.0f);\n+}\n+\n+__extension__ extern __inline uint64x2_t\n+__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n+vceqzq_f64 (float64x2_t __a)\n {\n- return (uint32x4_t) (__a < 0.0f);\n+ return (uint64x2_t) (__a == 0.0f);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltzq_f64 (float64x2_t __a)\n+vceqzq_p8 (poly8x16_t __a)\n {\n- return (uint64x2_t) (__a < 0.0);\n+ return (uint8x16_t) (__a == 0);\n }\n \n __extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltzq_s8 (int8x16_t __a)\n+vceqzq_s8 (int8x16_t __a)\n {\n- return (uint8x16_t) (__a < 0);\n+ return (uint8x16_t) (__a == 0);\n }\n \n __extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltzq_s16 (int16x8_t __a)\n+vceqzq_s16 (int16x8_t __a)\n {\n- return (uint16x8_t) (__a < 0);\n+ return (uint16x8_t) (__a == 0);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltzq_s32 (int32x4_t __a)\n+vceqzq_s32 (int32x4_t __a)\n {\n- return (uint32x4_t) (__a < 0);\n+ return (uint32x4_t) (__a == 0);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltzq_s64 (int64x2_t __a)\n-{\n- return (uint64x2_t) (__a < __AARCH64_INT64_C (0));\n-}\n-\n-/* vcltz - scalar. */\n-\n-__extension__ extern __inline uint32_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltzs_f32 (float32_t __a)\n+vceqzq_s64 (int64x2_t __a)\n {\n- return __a < 0.0f ? -1 : 0;\n+ return (uint64x2_t) (__a == __AARCH64_INT64_C (0));\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltzd_s64 (int64_t __a)\n+vceqzq_u8 (uint8x16_t __a)\n {\n- return __a < 0 ? -1ll : 0ll;\n+ return (__a == 0);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcltzd_f64 (float64_t __a)\n+vceqzq_u16 (uint16x8_t __a)\n {\n- return __a < 0.0 ? -1ll : 0ll;\n+ return (__a == 0);\n }\n \n-/* vcls. */\n-\n-__extension__ extern __inline int8x8_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcls_s8 (int8x8_t __a)\n+vceqzq_u32 (uint32x4_t __a)\n {\n- return __builtin_aarch64_clrsbv8qi (__a);\n+ return (__a == 0);\n }\n \n-__extension__ extern __inline int16x4_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcls_s16 (int16x4_t __a)\n+vceqzq_u64 (uint64x2_t __a)\n {\n- return __builtin_aarch64_clrsbv4hi (__a);\n+ return (__a == __AARCH64_UINT64_C (0));\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcls_s32 (int32x2_t __a)\n+vceqzq_p64 (poly64x2_t __a)\n {\n- return __builtin_aarch64_clrsbv2si (__a);\n+ return (__a == __AARCH64_UINT64_C (0));\n }\n \n-__extension__ extern __inline int8x16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclsq_s8 (int8x16_t __a)\n-{\n- return __builtin_aarch64_clrsbv16qi (__a);\n-}\n+/* vceqz - scalar. */\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclsq_s16 (int16x8_t __a)\n+vceqzs_f32 (float32_t __a)\n {\n- return __builtin_aarch64_clrsbv8hi (__a);\n+ return __a == 0.0f ? -1 : 0;\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclsq_s32 (int32x4_t __a)\n+vceqzd_s64 (int64_t __a)\n {\n- return __builtin_aarch64_clrsbv4si (__a);\n+ return __a == 0 ? -1ll : 0ll;\n }\n \n-__extension__ extern __inline int8x8_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcls_u8 (uint8x8_t __a)\n+vceqzd_u64 (uint64_t __a)\n {\n- return __builtin_aarch64_clrsbv8qi ((int8x8_t) __a);\n+ return __a == 0 ? -1ll : 0ll;\n }\n \n-__extension__ extern __inline int16x4_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcls_u16 (uint16x4_t __a)\n+vceqzd_f64 (float64_t __a)\n {\n- return __builtin_aarch64_clrsbv4hi ((int16x4_t) __a);\n+ return __a == 0.0 ? -1ll : 0ll;\n }\n \n-__extension__ extern __inline int32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcls_u32 (uint32x2_t __a)\n-{\n- return __builtin_aarch64_clrsbv2si ((int32x2_t) __a);\n-}\n+/* vcge - vector. */\n \n-__extension__ extern __inline int8x16_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclsq_u8 (uint8x16_t __a)\n+vcge_f32 (float32x2_t __a, float32x2_t __b)\n {\n- return __builtin_aarch64_clrsbv16qi ((int8x16_t) __a);\n+ return (uint32x2_t) (__a >= __b);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclsq_u16 (uint16x8_t __a)\n+vcge_f64 (float64x1_t __a, float64x1_t __b)\n {\n- return __builtin_aarch64_clrsbv8hi ((int16x8_t) __a);\n+ return (uint64x1_t) (__a >= __b);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclsq_u32 (uint32x4_t __a)\n+vcge_s8 (int8x8_t __a, int8x8_t __b)\n {\n- return __builtin_aarch64_clrsbv4si ((int32x4_t) __a);\n+ return (uint8x8_t) (__a >= __b);\n }\n \n-/* vclz. */\n-\n-__extension__ extern __inline int8x8_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclz_s8 (int8x8_t __a)\n+vcge_s16 (int16x4_t __a, int16x4_t __b)\n {\n- return __builtin_aarch64_clzv8qi (__a);\n+ return (uint16x4_t) (__a >= __b);\n }\n \n-__extension__ extern __inline int16x4_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclz_s16 (int16x4_t __a)\n+vcge_s32 (int32x2_t __a, int32x2_t __b)\n {\n- return __builtin_aarch64_clzv4hi (__a);\n+ return (uint32x2_t) (__a >= __b);\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclz_s32 (int32x2_t __a)\n+vcge_s64 (int64x1_t __a, int64x1_t __b)\n {\n- return __builtin_aarch64_clzv2si (__a);\n+ return (uint64x1_t) (__a >= __b);\n }\n \n __extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclz_u8 (uint8x8_t __a)\n+vcge_u8 (uint8x8_t __a, uint8x8_t __b)\n {\n- return (uint8x8_t)__builtin_aarch64_clzv8qi ((int8x8_t)__a);\n+ return (__a >= __b);\n }\n \n __extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclz_u16 (uint16x4_t __a)\n+vcge_u16 (uint16x4_t __a, uint16x4_t __b)\n {\n- return (uint16x4_t)__builtin_aarch64_clzv4hi ((int16x4_t)__a);\n+ return (__a >= __b);\n }\n \n __extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclz_u32 (uint32x2_t __a)\n+vcge_u32 (uint32x2_t __a, uint32x2_t __b)\n {\n- return (uint32x2_t)__builtin_aarch64_clzv2si ((int32x2_t)__a);\n+ return (__a >= __b);\n }\n \n-__extension__ extern __inline int8x16_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclzq_s8 (int8x16_t __a)\n+vcge_u64 (uint64x1_t __a, uint64x1_t __b)\n {\n- return __builtin_aarch64_clzv16qi (__a);\n+ return (__a >= __b);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclzq_s16 (int16x8_t __a)\n+vcgeq_f32 (float32x4_t __a, float32x4_t __b)\n {\n- return __builtin_aarch64_clzv8hi (__a);\n+ return (uint32x4_t) (__a >= __b);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclzq_s32 (int32x4_t __a)\n+vcgeq_f64 (float64x2_t __a, float64x2_t __b)\n {\n- return __builtin_aarch64_clzv4si (__a);\n+ return (uint64x2_t) (__a >= __b);\n }\n \n __extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclzq_u8 (uint8x16_t __a)\n+vcgeq_s8 (int8x16_t __a, int8x16_t __b)\n {\n- return (uint8x16_t)__builtin_aarch64_clzv16qi ((int8x16_t)__a);\n+ return (uint8x16_t) (__a >= __b);\n }\n \n __extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclzq_u16 (uint16x8_t __a)\n+vcgeq_s16 (int16x8_t __a, int16x8_t __b)\n {\n- return (uint16x8_t)__builtin_aarch64_clzv8hi ((int16x8_t)__a);\n+ return (uint16x8_t) (__a >= __b);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vclzq_u32 (uint32x4_t __a)\n+vcgeq_s32 (int32x4_t __a, int32x4_t __b)\n {\n- return (uint32x4_t)__builtin_aarch64_clzv4si ((int32x4_t)__a);\n+ return (uint32x4_t) (__a >= __b);\n }\n \n-/* vcnt. */\n+__extension__ extern __inline uint64x2_t\n+__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n+vcgeq_s64 (int64x2_t __a, int64x2_t __b)\n+{\n+ return (uint64x2_t) (__a >= __b);\n+}\n \n-__extension__ extern __inline poly8x8_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcnt_p8 (poly8x8_t __a)\n+vcgeq_u8 (uint8x16_t __a, uint8x16_t __b)\n {\n- return (poly8x8_t) __builtin_aarch64_popcountv8qi ((int8x8_t) __a);\n+ return (__a >= __b);\n }\n \n-__extension__ extern __inline int8x8_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcnt_s8 (int8x8_t __a)\n+vcgeq_u16 (uint16x8_t __a, uint16x8_t __b)\n {\n- return __builtin_aarch64_popcountv8qi (__a);\n+ return (__a >= __b);\n }\n \n-__extension__ extern __inline uint8x8_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcnt_u8 (uint8x8_t __a)\n+vcgeq_u32 (uint32x4_t __a, uint32x4_t __b)\n {\n- return (uint8x8_t) __builtin_aarch64_popcountv8qi ((int8x8_t) __a);\n+ return (__a >= __b);\n }\n \n-__extension__ extern __inline poly8x16_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcntq_p8 (poly8x16_t __a)\n+vcgeq_u64 (uint64x2_t __a, uint64x2_t __b)\n {\n- return (poly8x16_t) __builtin_aarch64_popcountv16qi ((int8x16_t) __a);\n+ return (__a >= __b);\n }\n \n-__extension__ extern __inline int8x16_t\n+/* vcge - scalar. */\n+\n+__extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcntq_s8 (int8x16_t __a)\n+vcges_f32 (float32_t __a, float32_t __b)\n {\n- return __builtin_aarch64_popcountv16qi (__a);\n+ return __a >= __b ? -1 : 0;\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcntq_u8 (uint8x16_t __a)\n+vcged_s64 (int64_t __a, int64_t __b)\n {\n- return (uint8x16_t) __builtin_aarch64_popcountv16qi ((int8x16_t) __a);\n+ return __a >= __b ? -1ll : 0ll;\n }\n \n-/* vcopy_lane. */\n+__extension__ extern __inline uint64_t\n+__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n+vcged_u64 (uint64_t __a, uint64_t __b)\n+{\n+ return __a >= __b ? -1ll : 0ll;\n+}\n \n-__extension__ extern __inline float32x2_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_lane_f32 (float32x2_t __a, const int __lane1,\n-\t\tfloat32x2_t __b, const int __lane2)\n+vcged_f64 (float64_t __a, float64_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return __a >= __b ? -1ll : 0ll;\n }\n \n-__extension__ extern __inline float64x1_t\n+/* vcgez - vector. */\n+\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_lane_f64 (float64x1_t __a, const int __lane1,\n-\t\tfloat64x1_t __b, const int __lane2)\n+vcgez_f32 (float32x2_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint32x2_t) (__a >= 0.0f);\n }\n \n-__extension__ extern __inline poly8x8_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_lane_p8 (poly8x8_t __a, const int __lane1,\n-\t poly8x8_t __b, const int __lane2)\n+vcgez_f64 (float64x1_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint64x1_t) (__a[0] >= (float64x1_t) {0.0});\n }\n \n-__extension__ extern __inline poly16x4_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_lane_p16 (poly16x4_t __a, const int __lane1,\n-\t\tpoly16x4_t __b, const int __lane2)\n+vcgez_s8 (int8x8_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint8x8_t) (__a >= 0);\n }\n \n-__extension__ extern __inline poly64x1_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_lane_p64 (poly64x1_t __a, const int __lane1,\n-\t\tpoly64x1_t __b, const int __lane2)\n+vcgez_s16 (int16x4_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint16x4_t) (__a >= 0);\n }\n \n-__extension__ extern __inline int8x8_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_lane_s8 (int8x8_t __a, const int __lane1,\n-\t int8x8_t __b, const int __lane2)\n+vcgez_s32 (int32x2_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint32x2_t) (__a >= 0);\n }\n \n-__extension__ extern __inline int16x4_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_lane_s16 (int16x4_t __a, const int __lane1,\n-\t\tint16x4_t __b, const int __lane2)\n+vcgez_s64 (int64x1_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint64x1_t) (__a >= __AARCH64_INT64_C (0));\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_lane_s32 (int32x2_t __a, const int __lane1,\n-\t\tint32x2_t __b, const int __lane2)\n+vcgezq_f32 (float32x4_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint32x4_t) (__a >= 0.0f);\n }\n \n-__extension__ extern __inline int64x1_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_lane_s64 (int64x1_t __a, const int __lane1,\n-\t\tint64x1_t __b, const int __lane2)\n+vcgezq_f64 (float64x2_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint64x2_t) (__a >= 0.0);\n }\n \n-__extension__ extern __inline uint8x8_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_lane_u8 (uint8x8_t __a, const int __lane1,\n-\t uint8x8_t __b, const int __lane2)\n+vcgezq_s8 (int8x16_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint8x16_t) (__a >= 0);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_lane_u16 (uint16x4_t __a, const int __lane1,\n-\t\tuint16x4_t __b, const int __lane2)\n+vcgezq_s16 (int16x8_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint16x8_t) (__a >= 0);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_lane_u32 (uint32x2_t __a, const int __lane1,\n-\t\tuint32x2_t __b, const int __lane2)\n+vcgezq_s32 (int32x4_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint32x4_t) (__a >= 0);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_lane_u64 (uint64x1_t __a, const int __lane1,\n-\t\tuint64x1_t __b, const int __lane2)\n+vcgezq_s64 (int64x2_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint64x2_t) (__a >= __AARCH64_INT64_C (0));\n }\n \n-/* vcopy_laneq. */\n+/* vcgez - scalar. */\n \n-__extension__ extern __inline float32x2_t\n+__extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_laneq_f32 (float32x2_t __a, const int __lane1,\n-\t\t float32x4_t __b, const int __lane2)\n+vcgezs_f32 (float32_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return __a >= 0.0f ? -1 : 0;\n }\n \n-__extension__ extern __inline float64x1_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_laneq_f64 (float64x1_t __a, const int __lane1,\n-\t\t float64x2_t __b, const int __lane2)\n+vcgezd_s64 (int64_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return __a >= 0 ? -1ll : 0ll;\n }\n \n-__extension__ extern __inline poly8x8_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_laneq_p8 (poly8x8_t __a, const int __lane1,\n-\t\tpoly8x16_t __b, const int __lane2)\n+vcgezd_f64 (float64_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return __a >= 0.0 ? -1ll : 0ll;\n }\n \n-__extension__ extern __inline poly16x4_t\n+/* vcgt - vector. */\n+\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_laneq_p16 (poly16x4_t __a, const int __lane1,\n-\t\t poly16x8_t __b, const int __lane2)\n+vcgt_f32 (float32x2_t __a, float32x2_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint32x2_t) (__a > __b);\n }\n \n-__extension__ extern __inline poly64x1_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_laneq_p64 (poly64x1_t __a, const int __lane1,\n-\t\t poly64x2_t __b, const int __lane2)\n+vcgt_f64 (float64x1_t __a, float64x1_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint64x1_t) (__a > __b);\n }\n \n-__extension__ extern __inline int8x8_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_laneq_s8 (int8x8_t __a, const int __lane1,\n-\t\tint8x16_t __b, const int __lane2)\n+vcgt_s8 (int8x8_t __a, int8x8_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint8x8_t) (__a > __b);\n }\n \n-__extension__ extern __inline int16x4_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_laneq_s16 (int16x4_t __a, const int __lane1,\n-\t\t int16x8_t __b, const int __lane2)\n+vcgt_s16 (int16x4_t __a, int16x4_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint16x4_t) (__a > __b);\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_laneq_s32 (int32x2_t __a, const int __lane1,\n-\t\t int32x4_t __b, const int __lane2)\n+vcgt_s32 (int32x2_t __a, int32x2_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint32x2_t) (__a > __b);\n }\n \n-__extension__ extern __inline int64x1_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_laneq_s64 (int64x1_t __a, const int __lane1,\n-\t\t int64x2_t __b, const int __lane2)\n+vcgt_s64 (int64x1_t __a, int64x1_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint64x1_t) (__a > __b);\n }\n \n __extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_laneq_u8 (uint8x8_t __a, const int __lane1,\n-\t\tuint8x16_t __b, const int __lane2)\n+vcgt_u8 (uint8x8_t __a, uint8x8_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (__a > __b);\n }\n \n __extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_laneq_u16 (uint16x4_t __a, const int __lane1,\n-\t\t uint16x8_t __b, const int __lane2)\n+vcgt_u16 (uint16x4_t __a, uint16x4_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (__a > __b);\n }\n \n __extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_laneq_u32 (uint32x2_t __a, const int __lane1,\n-\t\t uint32x4_t __b, const int __lane2)\n+vcgt_u32 (uint32x2_t __a, uint32x2_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (__a > __b);\n }\n \n __extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_laneq_u64 (uint64x1_t __a, const int __lane1,\n-\t\t uint64x2_t __b, const int __lane2)\n+vcgt_u64 (uint64x1_t __a, uint64x1_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (__a > __b);\n }\n \n-/* vcopyq_lane. */\n-\n-__extension__ extern __inline float32x4_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_lane_f32 (float32x4_t __a, const int __lane1,\n-\t\t float32x2_t __b, const int __lane2)\n+vcgtq_f32 (float32x4_t __a, float32x4_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint32x4_t) (__a > __b);\n }\n \n-__extension__ extern __inline float64x2_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_lane_f64 (float64x2_t __a, const int __lane1,\n-\t\t float64x1_t __b, const int __lane2)\n+vcgtq_f64 (float64x2_t __a, float64x2_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint64x2_t) (__a > __b);\n }\n \n-__extension__ extern __inline poly8x16_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_lane_p8 (poly8x16_t __a, const int __lane1,\n-\t\tpoly8x8_t __b, const int __lane2)\n+vcgtq_s8 (int8x16_t __a, int8x16_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint8x16_t) (__a > __b);\n }\n \n-__extension__ extern __inline poly16x8_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_lane_p16 (poly16x8_t __a, const int __lane1,\n-\t\t poly16x4_t __b, const int __lane2)\n+vcgtq_s16 (int16x8_t __a, int16x8_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint16x8_t) (__a > __b);\n }\n \n-__extension__ extern __inline poly64x2_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_lane_p64 (poly64x2_t __a, const int __lane1,\n-\t\t poly64x1_t __b, const int __lane2)\n+vcgtq_s32 (int32x4_t __a, int32x4_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint32x4_t) (__a > __b);\n }\n \n-__extension__ extern __inline int8x16_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_lane_s8 (int8x16_t __a, const int __lane1,\n-\t\tint8x8_t __b, const int __lane2)\n+vcgtq_s64 (int64x2_t __a, int64x2_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint64x2_t) (__a > __b);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_lane_s16 (int16x8_t __a, const int __lane1,\n-\t\t int16x4_t __b, const int __lane2)\n+vcgtq_u8 (uint8x16_t __a, uint8x16_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (__a > __b);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_lane_s32 (int32x4_t __a, const int __lane1,\n-\t\t int32x2_t __b, const int __lane2)\n+vcgtq_u16 (uint16x8_t __a, uint16x8_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (__a > __b);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_lane_s64 (int64x2_t __a, const int __lane1,\n-\t\t int64x1_t __b, const int __lane2)\n+vcgtq_u32 (uint32x4_t __a, uint32x4_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (__a > __b);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_lane_u8 (uint8x16_t __a, const int __lane1,\n-\t\tuint8x8_t __b, const int __lane2)\n+vcgtq_u64 (uint64x2_t __a, uint64x2_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (__a > __b);\n }\n \n-__extension__ extern __inline uint16x8_t\n+/* vcgt - scalar. */\n+\n+__extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_lane_u16 (uint16x8_t __a, const int __lane1,\n-\t\t uint16x4_t __b, const int __lane2)\n+vcgts_f32 (float32_t __a, float32_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return __a > __b ? -1 : 0;\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_lane_u32 (uint32x4_t __a, const int __lane1,\n-\t\t uint32x2_t __b, const int __lane2)\n+vcgtd_s64 (int64_t __a, int64_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return __a > __b ? -1ll : 0ll;\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_lane_u64 (uint64x2_t __a, const int __lane1,\n-\t\t uint64x1_t __b, const int __lane2)\n+vcgtd_u64 (uint64_t __a, uint64_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return __a > __b ? -1ll : 0ll;\n }\n \n-/* vcopyq_laneq. */\n-\n-__extension__ extern __inline float32x4_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_laneq_f32 (float32x4_t __a, const int __lane1,\n-\t\t float32x4_t __b, const int __lane2)\n+vcgtd_f64 (float64_t __a, float64_t __b)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return __a > __b ? -1ll : 0ll;\n }\n \n-__extension__ extern __inline float64x2_t\n+/* vcgtz - vector. */\n+\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_laneq_f64 (float64x2_t __a, const int __lane1,\n-\t\t float64x2_t __b, const int __lane2)\n+vcgtz_f32 (float32x2_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint32x2_t) (__a > 0.0f);\n }\n \n-__extension__ extern __inline poly8x16_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_laneq_p8 (poly8x16_t __a, const int __lane1,\n-\t\t poly8x16_t __b, const int __lane2)\n+vcgtz_f64 (float64x1_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint64x1_t) (__a > (float64x1_t) {0.0});\n }\n \n-__extension__ extern __inline poly16x8_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_laneq_p16 (poly16x8_t __a, const int __lane1,\n-\t\t poly16x8_t __b, const int __lane2)\n+vcgtz_s8 (int8x8_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint8x8_t) (__a > 0);\n }\n \n-__extension__ extern __inline poly64x2_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_laneq_p64 (poly64x2_t __a, const int __lane1,\n-\t\t poly64x2_t __b, const int __lane2)\n+vcgtz_s16 (int16x4_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint16x4_t) (__a > 0);\n }\n \n-__extension__ extern __inline int8x16_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_laneq_s8 (int8x16_t __a, const int __lane1,\n-\t\t int8x16_t __b, const int __lane2)\n+vcgtz_s32 (int32x2_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint32x2_t) (__a > 0);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_laneq_s16 (int16x8_t __a, const int __lane1,\n-\t\t int16x8_t __b, const int __lane2)\n+vcgtz_s64 (int64x1_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint64x1_t) (__a > __AARCH64_INT64_C (0));\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_laneq_s32 (int32x4_t __a, const int __lane1,\n-\t\t int32x4_t __b, const int __lane2)\n+vcgtzq_f32 (float32x4_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint32x4_t) (__a > 0.0f);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_laneq_s64 (int64x2_t __a, const int __lane1,\n-\t\t int64x2_t __b, const int __lane2)\n+vcgtzq_f64 (float64x2_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint64x2_t) (__a > 0.0);\n }\n \n __extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_laneq_u8 (uint8x16_t __a, const int __lane1,\n-\t\t uint8x16_t __b, const int __lane2)\n+vcgtzq_s8 (int8x16_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint8x16_t) (__a > 0);\n }\n \n __extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_laneq_u16 (uint16x8_t __a, const int __lane1,\n-\t\t uint16x8_t __b, const int __lane2)\n+vcgtzq_s16 (int16x8_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint16x8_t) (__a > 0);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_laneq_u32 (uint32x4_t __a, const int __lane1,\n-\t\t uint32x4_t __b, const int __lane2)\n+vcgtzq_s32 (int32x4_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint32x4_t) (__a > 0);\n }\n \n __extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_laneq_u64 (uint64x2_t __a, const int __lane1,\n-\t\t uint64x2_t __b, const int __lane2)\n+vcgtzq_s64 (int64x2_t __a)\n {\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n+ return (uint64x2_t) (__a > __AARCH64_INT64_C (0));\n }\n \n-/* vcvt (double -> float). */\n+/* vcgtz - scalar. */\n \n-__extension__ extern __inline float16x4_t\n+__extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_f16_f32 (float32x4_t __a)\n+vcgtzs_f32 (float32_t __a)\n {\n- return __builtin_aarch64_float_truncate_lo_v4hf (__a);\n+ return __a > 0.0f ? -1 : 0;\n }\n \n-__extension__ extern __inline float16x8_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_high_f16_f32 (float16x4_t __a, float32x4_t __b)\n+vcgtzd_s64 (int64_t __a)\n {\n- return __builtin_aarch64_float_truncate_hi_v8hf (__a, __b);\n+ return __a > 0 ? -1ll : 0ll;\n }\n \n-__extension__ extern __inline float32x2_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_f32_f64 (float64x2_t __a)\n+vcgtzd_f64 (float64_t __a)\n {\n- return __builtin_aarch64_float_truncate_lo_v2sf (__a);\n+ return __a > 0.0 ? -1ll : 0ll;\n }\n \n-__extension__ extern __inline float32x4_t\n+/* vcle - vector. */\n+\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_high_f32_f64 (float32x2_t __a, float64x2_t __b)\n+vcle_f32 (float32x2_t __a, float32x2_t __b)\n {\n- return __builtin_aarch64_float_truncate_hi_v4sf (__a, __b);\n+ return (uint32x2_t) (__a <= __b);\n }\n \n-/* vcvt (float -> double). */\n-\n-__extension__ extern __inline float32x4_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_f32_f16 (float16x4_t __a)\n+vcle_f64 (float64x1_t __a, float64x1_t __b)\n {\n- return __builtin_aarch64_float_extend_lo_v4sf (__a);\n+ return (uint64x1_t) (__a <= __b);\n }\n \n-__extension__ extern __inline float64x2_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_f64_f32 (float32x2_t __a)\n+vcle_s8 (int8x8_t __a, int8x8_t __b)\n {\n-\n- return __builtin_aarch64_float_extend_lo_v2df (__a);\n+ return (uint8x8_t) (__a <= __b);\n }\n \n-__extension__ extern __inline float32x4_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_high_f32_f16 (float16x8_t __a)\n+vcle_s16 (int16x4_t __a, int16x4_t __b)\n {\n- return __builtin_aarch64_vec_unpacks_hi_v8hf (__a);\n+ return (uint16x4_t) (__a <= __b);\n }\n \n-__extension__ extern __inline float64x2_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_high_f64_f32 (float32x4_t __a)\n+vcle_s32 (int32x2_t __a, int32x2_t __b)\n {\n- return __builtin_aarch64_vec_unpacks_hi_v4sf (__a);\n+ return (uint32x2_t) (__a <= __b);\n }\n \n-/* vcvt (<u>fixed-point -> float). */\n+__extension__ extern __inline uint64x1_t\n+__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n+vcle_s64 (int64x1_t __a, int64x1_t __b)\n+{\n+ return (uint64x1_t) (__a <= __b);\n+}\n \n-__extension__ extern __inline float64_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtd_n_f64_s64 (int64_t __a, const int __b)\n+vcle_u8 (uint8x8_t __a, uint8x8_t __b)\n {\n- return __builtin_aarch64_scvtfdi (__a, __b);\n+ return (__a <= __b);\n }\n \n-__extension__ extern __inline float64_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtd_n_f64_u64 (uint64_t __a, const int __b)\n+vcle_u16 (uint16x4_t __a, uint16x4_t __b)\n {\n- return __builtin_aarch64_ucvtfdi_sus (__a, __b);\n+ return (__a <= __b);\n }\n \n-__extension__ extern __inline float32_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvts_n_f32_s32 (int32_t __a, const int __b)\n+vcle_u32 (uint32x2_t __a, uint32x2_t __b)\n {\n- return __builtin_aarch64_scvtfsi (__a, __b);\n+ return (__a <= __b);\n }\n \n-__extension__ extern __inline float32_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvts_n_f32_u32 (uint32_t __a, const int __b)\n+vcle_u64 (uint64x1_t __a, uint64x1_t __b)\n {\n- return __builtin_aarch64_ucvtfsi_sus (__a, __b);\n+ return (__a <= __b);\n }\n \n-__extension__ extern __inline float32x2_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_n_f32_s32 (int32x2_t __a, const int __b)\n+vcleq_f32 (float32x4_t __a, float32x4_t __b)\n {\n- return __builtin_aarch64_scvtfv2si (__a, __b);\n+ return (uint32x4_t) (__a <= __b);\n }\n \n-__extension__ extern __inline float32x2_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_n_f32_u32 (uint32x2_t __a, const int __b)\n+vcleq_f64 (float64x2_t __a, float64x2_t __b)\n {\n- return __builtin_aarch64_ucvtfv2si_sus (__a, __b);\n+ return (uint64x2_t) (__a <= __b);\n }\n \n-__extension__ extern __inline float64x1_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_n_f64_s64 (int64x1_t __a, const int __b)\n+vcleq_s8 (int8x16_t __a, int8x16_t __b)\n {\n- return (float64x1_t)\n- { __builtin_aarch64_scvtfdi (vget_lane_s64 (__a, 0), __b) };\n+ return (uint8x16_t) (__a <= __b);\n }\n \n-__extension__ extern __inline float64x1_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_n_f64_u64 (uint64x1_t __a, const int __b)\n+vcleq_s16 (int16x8_t __a, int16x8_t __b)\n {\n- return (float64x1_t)\n- { __builtin_aarch64_ucvtfdi_sus (vget_lane_u64 (__a, 0), __b) };\n+ return (uint16x8_t) (__a <= __b);\n }\n \n-__extension__ extern __inline float32x4_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtq_n_f32_s32 (int32x4_t __a, const int __b)\n+vcleq_s32 (int32x4_t __a, int32x4_t __b)\n {\n- return __builtin_aarch64_scvtfv4si (__a, __b);\n+ return (uint32x4_t) (__a <= __b);\n }\n \n-__extension__ extern __inline float32x4_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtq_n_f32_u32 (uint32x4_t __a, const int __b)\n+vcleq_s64 (int64x2_t __a, int64x2_t __b)\n {\n- return __builtin_aarch64_ucvtfv4si_sus (__a, __b);\n+ return (uint64x2_t) (__a <= __b);\n }\n \n-__extension__ extern __inline float64x2_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtq_n_f64_s64 (int64x2_t __a, const int __b)\n+vcleq_u8 (uint8x16_t __a, uint8x16_t __b)\n {\n- return __builtin_aarch64_scvtfv2di (__a, __b);\n+ return (__a <= __b);\n }\n \n-__extension__ extern __inline float64x2_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtq_n_f64_u64 (uint64x2_t __a, const int __b)\n+vcleq_u16 (uint16x8_t __a, uint16x8_t __b)\n {\n- return __builtin_aarch64_ucvtfv2di_sus (__a, __b);\n+ return (__a <= __b);\n }\n \n-/* vcvt (float -> <u>fixed-point). */\n-\n-__extension__ extern __inline int64_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtd_n_s64_f64 (float64_t __a, const int __b)\n+vcleq_u32 (uint32x4_t __a, uint32x4_t __b)\n {\n- return __builtin_aarch64_fcvtzsdf (__a, __b);\n+ return (__a <= __b);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtd_n_u64_f64 (float64_t __a, const int __b)\n+vcleq_u64 (uint64x2_t __a, uint64x2_t __b)\n {\n- return __builtin_aarch64_fcvtzudf_uss (__a, __b);\n+ return (__a <= __b);\n }\n \n-__extension__ extern __inline int32_t\n+/* vcle - scalar. */\n+\n+__extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvts_n_s32_f32 (float32_t __a, const int __b)\n+vcles_f32 (float32_t __a, float32_t __b)\n {\n- return __builtin_aarch64_fcvtzssf (__a, __b);\n+ return __a <= __b ? -1 : 0;\n }\n \n-__extension__ extern __inline uint32_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvts_n_u32_f32 (float32_t __a, const int __b)\n+vcled_s64 (int64_t __a, int64_t __b)\n {\n- return __builtin_aarch64_fcvtzusf_uss (__a, __b);\n+ return __a <= __b ? -1ll : 0ll;\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_n_s32_f32 (float32x2_t __a, const int __b)\n+vcled_u64 (uint64_t __a, uint64_t __b)\n {\n- return __builtin_aarch64_fcvtzsv2sf (__a, __b);\n+ return __a <= __b ? -1ll : 0ll;\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_n_u32_f32 (float32x2_t __a, const int __b)\n+vcled_f64 (float64_t __a, float64_t __b)\n {\n- return __builtin_aarch64_fcvtzuv2sf_uss (__a, __b);\n+ return __a <= __b ? -1ll : 0ll;\n }\n \n-__extension__ extern __inline int64x1_t\n+/* vclez - vector. */\n+\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_n_s64_f64 (float64x1_t __a, const int __b)\n+vclez_f32 (float32x2_t __a)\n {\n- return (int64x1_t)\n- { __builtin_aarch64_fcvtzsdf (vget_lane_f64 (__a, 0), __b) };\n+ return (uint32x2_t) (__a <= 0.0f);\n }\n \n __extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_n_u64_f64 (float64x1_t __a, const int __b)\n+vclez_f64 (float64x1_t __a)\n {\n- return (uint64x1_t)\n- { __builtin_aarch64_fcvtzudf_uss (vget_lane_f64 (__a, 0), __b) };\n+ return (uint64x1_t) (__a <= (float64x1_t) {0.0});\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtq_n_s32_f32 (float32x4_t __a, const int __b)\n+vclez_s8 (int8x8_t __a)\n {\n- return __builtin_aarch64_fcvtzsv4sf (__a, __b);\n+ return (uint8x8_t) (__a <= 0);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtq_n_u32_f32 (float32x4_t __a, const int __b)\n+vclez_s16 (int16x4_t __a)\n {\n- return __builtin_aarch64_fcvtzuv4sf_uss (__a, __b);\n+ return (uint16x4_t) (__a <= 0);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtq_n_s64_f64 (float64x2_t __a, const int __b)\n+vclez_s32 (int32x2_t __a)\n {\n- return __builtin_aarch64_fcvtzsv2df (__a, __b);\n+ return (uint32x2_t) (__a <= 0);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtq_n_u64_f64 (float64x2_t __a, const int __b)\n+vclez_s64 (int64x1_t __a)\n {\n- return __builtin_aarch64_fcvtzuv2df_uss (__a, __b);\n+ return (uint64x1_t) (__a <= __AARCH64_INT64_C (0));\n }\n \n-/* vcvt (<u>int -> float) */\n-\n-__extension__ extern __inline float64_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtd_f64_s64 (int64_t __a)\n+vclezq_f32 (float32x4_t __a)\n {\n- return (float64_t) __a;\n+ return (uint32x4_t) (__a <= 0.0f);\n }\n \n-__extension__ extern __inline float64_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtd_f64_u64 (uint64_t __a)\n+vclezq_f64 (float64x2_t __a)\n {\n- return (float64_t) __a;\n+ return (uint64x2_t) (__a <= 0.0);\n }\n \n-__extension__ extern __inline float32_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvts_f32_s32 (int32_t __a)\n+vclezq_s8 (int8x16_t __a)\n {\n- return (float32_t) __a;\n+ return (uint8x16_t) (__a <= 0);\n }\n \n-__extension__ extern __inline float32_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvts_f32_u32 (uint32_t __a)\n+vclezq_s16 (int16x8_t __a)\n {\n- return (float32_t) __a;\n+ return (uint16x8_t) (__a <= 0);\n }\n \n-__extension__ extern __inline float32x2_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_f32_s32 (int32x2_t __a)\n+vclezq_s32 (int32x4_t __a)\n {\n- return __builtin_aarch64_floatv2siv2sf (__a);\n+ return (uint32x4_t) (__a <= 0);\n }\n \n-__extension__ extern __inline float32x2_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_f32_u32 (uint32x2_t __a)\n+vclezq_s64 (int64x2_t __a)\n {\n- return __builtin_aarch64_floatunsv2siv2sf ((int32x2_t) __a);\n+ return (uint64x2_t) (__a <= __AARCH64_INT64_C (0));\n }\n \n-__extension__ extern __inline float64x1_t\n+/* vclez - scalar. */\n+\n+__extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_f64_s64 (int64x1_t __a)\n+vclezs_f32 (float32_t __a)\n {\n- return (float64x1_t) { vget_lane_s64 (__a, 0) };\n+ return __a <= 0.0f ? -1 : 0;\n }\n \n-__extension__ extern __inline float64x1_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_f64_u64 (uint64x1_t __a)\n+vclezd_s64 (int64_t __a)\n {\n- return (float64x1_t) { vget_lane_u64 (__a, 0) };\n+ return __a <= 0 ? -1ll : 0ll;\n }\n \n-__extension__ extern __inline float32x4_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtq_f32_s32 (int32x4_t __a)\n+vclezd_f64 (float64_t __a)\n {\n- return __builtin_aarch64_floatv4siv4sf (__a);\n+ return __a <= 0.0 ? -1ll : 0ll;\n }\n \n-__extension__ extern __inline float32x4_t\n+/* vclt - vector. */\n+\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtq_f32_u32 (uint32x4_t __a)\n+vclt_f32 (float32x2_t __a, float32x2_t __b)\n {\n- return __builtin_aarch64_floatunsv4siv4sf ((int32x4_t) __a);\n+ return (uint32x2_t) (__a < __b);\n }\n \n-__extension__ extern __inline float64x2_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtq_f64_s64 (int64x2_t __a)\n+vclt_f64 (float64x1_t __a, float64x1_t __b)\n {\n- return __builtin_aarch64_floatv2div2df (__a);\n+ return (uint64x1_t) (__a < __b);\n }\n \n-__extension__ extern __inline float64x2_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtq_f64_u64 (uint64x2_t __a)\n+vclt_s8 (int8x8_t __a, int8x8_t __b)\n {\n- return __builtin_aarch64_floatunsv2div2df ((int64x2_t) __a);\n+ return (uint8x8_t) (__a < __b);\n }\n \n-/* vcvt (float -> <u>int) */\n-\n-__extension__ extern __inline int64_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtd_s64_f64 (float64_t __a)\n+vclt_s16 (int16x4_t __a, int16x4_t __b)\n {\n- return (int64_t) __a;\n+ return (uint16x4_t) (__a < __b);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtd_u64_f64 (float64_t __a)\n+vclt_s32 (int32x2_t __a, int32x2_t __b)\n {\n- return (uint64_t) __a;\n+ return (uint32x2_t) (__a < __b);\n }\n \n-__extension__ extern __inline int32_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvts_s32_f32 (float32_t __a)\n+vclt_s64 (int64x1_t __a, int64x1_t __b)\n {\n- return (int32_t) __a;\n+ return (uint64x1_t) (__a < __b);\n }\n \n-__extension__ extern __inline uint32_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvts_u32_f32 (float32_t __a)\n+vclt_u8 (uint8x8_t __a, uint8x8_t __b)\n {\n- return (uint32_t) __a;\n+ return (__a < __b);\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_s32_f32 (float32x2_t __a)\n+vclt_u16 (uint16x4_t __a, uint16x4_t __b)\n {\n- return __builtin_aarch64_lbtruncv2sfv2si (__a);\n+ return (__a < __b);\n }\n \n __extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_u32_f32 (float32x2_t __a)\n+vclt_u32 (uint32x2_t __a, uint32x2_t __b)\n {\n- return __builtin_aarch64_lbtruncuv2sfv2si_us (__a);\n+ return (__a < __b);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtq_s32_f32 (float32x4_t __a)\n+vclt_u64 (uint64x1_t __a, uint64x1_t __b)\n {\n- return __builtin_aarch64_lbtruncv4sfv4si (__a);\n+ return (__a < __b);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtq_u32_f32 (float32x4_t __a)\n+vcltq_f32 (float32x4_t __a, float32x4_t __b)\n {\n- return __builtin_aarch64_lbtruncuv4sfv4si_us (__a);\n+ return (uint32x4_t) (__a < __b);\n }\n \n-__extension__ extern __inline int64x1_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_s64_f64 (float64x1_t __a)\n+vcltq_f64 (float64x2_t __a, float64x2_t __b)\n {\n- return (int64x1_t) {vcvtd_s64_f64 (__a[0])};\n+ return (uint64x2_t) (__a < __b);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvt_u64_f64 (float64x1_t __a)\n+vcltq_s8 (int8x16_t __a, int8x16_t __b)\n {\n- return (uint64x1_t) {vcvtd_u64_f64 (__a[0])};\n+ return (uint8x16_t) (__a < __b);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtq_s64_f64 (float64x2_t __a)\n+vcltq_s16 (int16x8_t __a, int16x8_t __b)\n {\n- return __builtin_aarch64_lbtruncv2dfv2di (__a);\n+ return (uint16x8_t) (__a < __b);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtq_u64_f64 (float64x2_t __a)\n+vcltq_s32 (int32x4_t __a, int32x4_t __b)\n {\n- return __builtin_aarch64_lbtruncuv2dfv2di_us (__a);\n+ return (uint32x4_t) (__a < __b);\n }\n \n-/* vcvta */\n-\n-__extension__ extern __inline int64_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtad_s64_f64 (float64_t __a)\n+vcltq_s64 (int64x2_t __a, int64x2_t __b)\n {\n- return __builtin_aarch64_lrounddfdi (__a);\n+ return (uint64x2_t) (__a < __b);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtad_u64_f64 (float64_t __a)\n+vcltq_u8 (uint8x16_t __a, uint8x16_t __b)\n {\n- return __builtin_aarch64_lroundudfdi_us (__a);\n+ return (__a < __b);\n }\n \n-__extension__ extern __inline int32_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtas_s32_f32 (float32_t __a)\n+vcltq_u16 (uint16x8_t __a, uint16x8_t __b)\n {\n- return __builtin_aarch64_lroundsfsi (__a);\n+ return (__a < __b);\n }\n \n-__extension__ extern __inline uint32_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtas_u32_f32 (float32_t __a)\n+vcltq_u32 (uint32x4_t __a, uint32x4_t __b)\n {\n- return __builtin_aarch64_lroundusfsi_us (__a);\n+ return (__a < __b);\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvta_s32_f32 (float32x2_t __a)\n+vcltq_u64 (uint64x2_t __a, uint64x2_t __b)\n {\n- return __builtin_aarch64_lroundv2sfv2si (__a);\n+ return (__a < __b);\n }\n \n-__extension__ extern __inline uint32x2_t\n+/* vclt - scalar. */\n+\n+__extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvta_u32_f32 (float32x2_t __a)\n+vclts_f32 (float32_t __a, float32_t __b)\n {\n- return __builtin_aarch64_lrounduv2sfv2si_us (__a);\n+ return __a < __b ? -1 : 0;\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtaq_s32_f32 (float32x4_t __a)\n+vcltd_s64 (int64_t __a, int64_t __b)\n {\n- return __builtin_aarch64_lroundv4sfv4si (__a);\n+ return __a < __b ? -1ll : 0ll;\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtaq_u32_f32 (float32x4_t __a)\n+vcltd_u64 (uint64_t __a, uint64_t __b)\n {\n- return __builtin_aarch64_lrounduv4sfv4si_us (__a);\n+ return __a < __b ? -1ll : 0ll;\n }\n \n-__extension__ extern __inline int64x1_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvta_s64_f64 (float64x1_t __a)\n+vcltd_f64 (float64_t __a, float64_t __b)\n {\n- return (int64x1_t) {vcvtad_s64_f64 (__a[0])};\n+ return __a < __b ? -1ll : 0ll;\n }\n \n-__extension__ extern __inline uint64x1_t\n+/* vcltz - vector. */\n+\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvta_u64_f64 (float64x1_t __a)\n+vcltz_f32 (float32x2_t __a)\n {\n- return (uint64x1_t) {vcvtad_u64_f64 (__a[0])};\n+ return (uint32x2_t) (__a < 0.0f);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtaq_s64_f64 (float64x2_t __a)\n+vcltz_f64 (float64x1_t __a)\n {\n- return __builtin_aarch64_lroundv2dfv2di (__a);\n+ return (uint64x1_t) (__a < (float64x1_t) {0.0});\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtaq_u64_f64 (float64x2_t __a)\n+vcltz_s8 (int8x8_t __a)\n {\n- return __builtin_aarch64_lrounduv2dfv2di_us (__a);\n+ return (uint8x8_t) (__a < 0);\n }\n \n-/* vcvtm */\n-\n-__extension__ extern __inline int64_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtmd_s64_f64 (float64_t __a)\n+vcltz_s16 (int16x4_t __a)\n {\n- return __builtin_llfloor (__a);\n+ return (uint16x4_t) (__a < 0);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtmd_u64_f64 (float64_t __a)\n+vcltz_s32 (int32x2_t __a)\n {\n- return __builtin_aarch64_lfloorudfdi_us (__a);\n+ return (uint32x2_t) (__a < 0);\n }\n \n-__extension__ extern __inline int32_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtms_s32_f32 (float32_t __a)\n+vcltz_s64 (int64x1_t __a)\n {\n- return __builtin_ifloorf (__a);\n+ return (uint64x1_t) (__a < __AARCH64_INT64_C (0));\n }\n \n-__extension__ extern __inline uint32_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtms_u32_f32 (float32_t __a)\n+vcltzq_f32 (float32x4_t __a)\n {\n- return __builtin_aarch64_lfloorusfsi_us (__a);\n+ return (uint32x4_t) (__a < 0.0f);\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtm_s32_f32 (float32x2_t __a)\n+vcltzq_f64 (float64x2_t __a)\n {\n- return __builtin_aarch64_lfloorv2sfv2si (__a);\n+ return (uint64x2_t) (__a < 0.0);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtm_u32_f32 (float32x2_t __a)\n+vcltzq_s8 (int8x16_t __a)\n {\n- return __builtin_aarch64_lflooruv2sfv2si_us (__a);\n+ return (uint8x16_t) (__a < 0);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtmq_s32_f32 (float32x4_t __a)\n+vcltzq_s16 (int16x8_t __a)\n {\n- return __builtin_aarch64_lfloorv4sfv4si (__a);\n+ return (uint16x8_t) (__a < 0);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtmq_u32_f32 (float32x4_t __a)\n+vcltzq_s32 (int32x4_t __a)\n {\n- return __builtin_aarch64_lflooruv4sfv4si_us (__a);\n+ return (uint32x4_t) (__a < 0);\n }\n \n-__extension__ extern __inline int64x1_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtm_s64_f64 (float64x1_t __a)\n+vcltzq_s64 (int64x2_t __a)\n {\n- return (int64x1_t) {vcvtmd_s64_f64 (__a[0])};\n+ return (uint64x2_t) (__a < __AARCH64_INT64_C (0));\n }\n \n-__extension__ extern __inline uint64x1_t\n+/* vcltz - scalar. */\n+\n+__extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtm_u64_f64 (float64x1_t __a)\n+vcltzs_f32 (float32_t __a)\n {\n- return (uint64x1_t) {vcvtmd_u64_f64 (__a[0])};\n+ return __a < 0.0f ? -1 : 0;\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtmq_s64_f64 (float64x2_t __a)\n+vcltzd_s64 (int64_t __a)\n {\n- return __builtin_aarch64_lfloorv2dfv2di (__a);\n+ return __a < 0 ? -1ll : 0ll;\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtmq_u64_f64 (float64x2_t __a)\n+vcltzd_f64 (float64_t __a)\n {\n- return __builtin_aarch64_lflooruv2dfv2di_us (__a);\n+ return __a < 0.0 ? -1ll : 0ll;\n }\n \n-/* vcvtn */\n+/* vcls. */\n \n-__extension__ extern __inline int64_t\n+__extension__ extern __inline int8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtnd_s64_f64 (float64_t __a)\n+vcls_s8 (int8x8_t __a)\n {\n- return __builtin_aarch64_lfrintndfdi (__a);\n+ return __builtin_aarch64_clrsbv8qi (__a);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtnd_u64_f64 (float64_t __a)\n+vcls_s16 (int16x4_t __a)\n {\n- return __builtin_aarch64_lfrintnudfdi_us (__a);\n+ return __builtin_aarch64_clrsbv4hi (__a);\n }\n \n-__extension__ extern __inline int32_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtns_s32_f32 (float32_t __a)\n+vcls_s32 (int32x2_t __a)\n {\n- return __builtin_aarch64_lfrintnsfsi (__a);\n+ return __builtin_aarch64_clrsbv2si (__a);\n }\n \n-__extension__ extern __inline uint32_t\n+__extension__ extern __inline int8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtns_u32_f32 (float32_t __a)\n+vclsq_s8 (int8x16_t __a)\n {\n- return __builtin_aarch64_lfrintnusfsi_us (__a);\n+ return __builtin_aarch64_clrsbv16qi (__a);\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtn_s32_f32 (float32x2_t __a)\n+vclsq_s16 (int16x8_t __a)\n {\n- return __builtin_aarch64_lfrintnv2sfv2si (__a);\n+ return __builtin_aarch64_clrsbv8hi (__a);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtn_u32_f32 (float32x2_t __a)\n+vclsq_s32 (int32x4_t __a)\n {\n- return __builtin_aarch64_lfrintnuv2sfv2si_us (__a);\n+ return __builtin_aarch64_clrsbv4si (__a);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline int8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtnq_s32_f32 (float32x4_t __a)\n+vcls_u8 (uint8x8_t __a)\n {\n- return __builtin_aarch64_lfrintnv4sfv4si (__a);\n+ return __builtin_aarch64_clrsbv8qi ((int8x8_t) __a);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtnq_u32_f32 (float32x4_t __a)\n+vcls_u16 (uint16x4_t __a)\n {\n- return __builtin_aarch64_lfrintnuv4sfv4si_us (__a);\n+ return __builtin_aarch64_clrsbv4hi ((int16x4_t) __a);\n }\n \n-__extension__ extern __inline int64x1_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtn_s64_f64 (float64x1_t __a)\n+vcls_u32 (uint32x2_t __a)\n {\n- return (int64x1_t) {vcvtnd_s64_f64 (__a[0])};\n+ return __builtin_aarch64_clrsbv2si ((int32x2_t) __a);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline int8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtn_u64_f64 (float64x1_t __a)\n+vclsq_u8 (uint8x16_t __a)\n {\n- return (uint64x1_t) {vcvtnd_u64_f64 (__a[0])};\n+ return __builtin_aarch64_clrsbv16qi ((int8x16_t) __a);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtnq_s64_f64 (float64x2_t __a)\n+vclsq_u16 (uint16x8_t __a)\n {\n- return __builtin_aarch64_lfrintnv2dfv2di (__a);\n+ return __builtin_aarch64_clrsbv8hi ((int16x8_t) __a);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtnq_u64_f64 (float64x2_t __a)\n+vclsq_u32 (uint32x4_t __a)\n {\n- return __builtin_aarch64_lfrintnuv2dfv2di_us (__a);\n+ return __builtin_aarch64_clrsbv4si ((int32x4_t) __a);\n }\n \n-/* vcvtp */\n+/* vclz. */\n \n-__extension__ extern __inline int64_t\n+__extension__ extern __inline int8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtpd_s64_f64 (float64_t __a)\n+vclz_s8 (int8x8_t __a)\n {\n- return __builtin_llceil (__a);\n+ return __builtin_aarch64_clzv8qi (__a);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline int16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtpd_u64_f64 (float64_t __a)\n+vclz_s16 (int16x4_t __a)\n {\n- return __builtin_aarch64_lceiludfdi_us (__a);\n+ return __builtin_aarch64_clzv4hi (__a);\n }\n \n-__extension__ extern __inline int32_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtps_s32_f32 (float32_t __a)\n+vclz_s32 (int32x2_t __a)\n {\n- return __builtin_iceilf (__a);\n+ return __builtin_aarch64_clzv2si (__a);\n }\n \n-__extension__ extern __inline uint32_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtps_u32_f32 (float32_t __a)\n+vclz_u8 (uint8x8_t __a)\n {\n- return __builtin_aarch64_lceilusfsi_us (__a);\n+ return (uint8x8_t)__builtin_aarch64_clzv8qi ((int8x8_t)__a);\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline uint16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtp_s32_f32 (float32x2_t __a)\n+vclz_u16 (uint16x4_t __a)\n {\n- return __builtin_aarch64_lceilv2sfv2si (__a);\n+ return (uint16x4_t)__builtin_aarch64_clzv4hi ((int16x4_t)__a);\n }\n \n __extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtp_u32_f32 (float32x2_t __a)\n+vclz_u32 (uint32x2_t __a)\n {\n- return __builtin_aarch64_lceiluv2sfv2si_us (__a);\n+ return (uint32x2_t)__builtin_aarch64_clzv2si ((int32x2_t)__a);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline int8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtpq_s32_f32 (float32x4_t __a)\n+vclzq_s8 (int8x16_t __a)\n {\n- return __builtin_aarch64_lceilv4sfv4si (__a);\n+ return __builtin_aarch64_clzv16qi (__a);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtpq_u32_f32 (float32x4_t __a)\n+vclzq_s16 (int16x8_t __a)\n {\n- return __builtin_aarch64_lceiluv4sfv4si_us (__a);\n+ return __builtin_aarch64_clzv8hi (__a);\n }\n \n-__extension__ extern __inline int64x1_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtp_s64_f64 (float64x1_t __a)\n+vclzq_s32 (int32x4_t __a)\n {\n- return (int64x1_t) {vcvtpd_s64_f64 (__a[0])};\n+ return __builtin_aarch64_clzv4si (__a);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtp_u64_f64 (float64x1_t __a)\n+vclzq_u8 (uint8x16_t __a)\n {\n- return (uint64x1_t) {vcvtpd_u64_f64 (__a[0])};\n+ return (uint8x16_t)__builtin_aarch64_clzv16qi ((int8x16_t)__a);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline uint16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtpq_s64_f64 (float64x2_t __a)\n+vclzq_u16 (uint16x8_t __a)\n {\n- return __builtin_aarch64_lceilv2dfv2di (__a);\n+ return (uint16x8_t)__builtin_aarch64_clzv8hi ((int16x8_t)__a);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcvtpq_u64_f64 (float64x2_t __a)\n+vclzq_u32 (uint32x4_t __a)\n {\n- return __builtin_aarch64_lceiluv2dfv2di_us (__a);\n+ return (uint32x4_t)__builtin_aarch64_clzv4si ((int32x4_t)__a);\n }\n \n-/* vdup_n */\n+/* vcnt. */\n \n-__extension__ extern __inline float16x4_t\n+__extension__ extern __inline poly8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_n_f16 (float16_t __a)\n+vcnt_p8 (poly8x8_t __a)\n {\n- return (float16x4_t) {__a, __a, __a, __a};\n+ return (poly8x8_t) __builtin_aarch64_popcountv8qi ((int8x8_t) __a);\n }\n \n-__extension__ extern __inline float32x2_t\n+__extension__ extern __inline int8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_n_f32 (float32_t __a)\n+vcnt_s8 (int8x8_t __a)\n {\n- return (float32x2_t) {__a, __a};\n+ return __builtin_aarch64_popcountv8qi (__a);\n }\n \n-__extension__ extern __inline float64x1_t\n+__extension__ extern __inline uint8x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_n_f64 (float64_t __a)\n+vcnt_u8 (uint8x8_t __a)\n {\n- return (float64x1_t) {__a};\n+ return (uint8x8_t) __builtin_aarch64_popcountv8qi ((int8x8_t) __a);\n }\n \n-__extension__ extern __inline poly8x8_t\n+__extension__ extern __inline poly8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_n_p8 (poly8_t __a)\n+vcntq_p8 (poly8x16_t __a)\n {\n- return (poly8x8_t) {__a, __a, __a, __a, __a, __a, __a, __a};\n+ return (poly8x16_t) __builtin_aarch64_popcountv16qi ((int8x16_t) __a);\n }\n \n-__extension__ extern __inline poly16x4_t\n+__extension__ extern __inline int8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_n_p16 (poly16_t __a)\n+vcntq_s8 (int8x16_t __a)\n {\n- return (poly16x4_t) {__a, __a, __a, __a};\n+ return __builtin_aarch64_popcountv16qi (__a);\n }\n \n-__extension__ extern __inline poly64x1_t\n+__extension__ extern __inline uint8x16_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_n_p64 (poly64_t __a)\n+vcntq_u8 (uint8x16_t __a)\n {\n- return (poly64x1_t) {__a};\n+ return (uint8x16_t) __builtin_aarch64_popcountv16qi ((int8x16_t) __a);\n }\n \n-__extension__ extern __inline int8x8_t\n+/* vcvt (double -> float). */\n+\n+__extension__ extern __inline float16x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_n_s8 (int8_t __a)\n+vcvt_f16_f32 (float32x4_t __a)\n {\n- return (int8x8_t) {__a, __a, __a, __a, __a, __a, __a, __a};\n+ return __builtin_aarch64_float_truncate_lo_v4hf (__a);\n }\n \n-__extension__ extern __inline int16x4_t\n+__extension__ extern __inline float16x8_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_n_s16 (int16_t __a)\n+vcvt_high_f16_f32 (float16x4_t __a, float32x4_t __b)\n {\n- return (int16x4_t) {__a, __a, __a, __a};\n+ return __builtin_aarch64_float_truncate_hi_v8hf (__a, __b);\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline float32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_n_s32 (int32_t __a)\n+vcvt_f32_f64 (float64x2_t __a)\n {\n- return (int32x2_t) {__a, __a};\n+ return __builtin_aarch64_float_truncate_lo_v2sf (__a);\n }\n \n-__extension__ extern __inline int64x1_t\n+__extension__ extern __inline float32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_n_s64 (int64_t __a)\n+vcvt_high_f32_f64 (float32x2_t __a, float64x2_t __b)\n {\n- return (int64x1_t) {__a};\n+ return __builtin_aarch64_float_truncate_hi_v4sf (__a, __b);\n }\n \n-__extension__ extern __inline uint8x8_t\n+/* vcvt (float -> double). */\n+\n+__extension__ extern __inline float32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_n_u8 (uint8_t __a)\n+vcvt_f32_f16 (float16x4_t __a)\n {\n- return (uint8x8_t) {__a, __a, __a, __a, __a, __a, __a, __a};\n+ return __builtin_aarch64_float_extend_lo_v4sf (__a);\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline float64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_n_u16 (uint16_t __a)\n+vcvt_f64_f32 (float32x2_t __a)\n {\n- return (uint16x4_t) {__a, __a, __a, __a};\n+\n+ return __builtin_aarch64_float_extend_lo_v2df (__a);\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline float32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_n_u32 (uint32_t __a)\n+vcvt_high_f32_f16 (float16x8_t __a)\n {\n- return (uint32x2_t) {__a, __a};\n+ return __builtin_aarch64_vec_unpacks_hi_v8hf (__a);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline float64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_n_u64 (uint64_t __a)\n+vcvt_high_f64_f32 (float32x4_t __a)\n {\n- return (uint64x1_t) {__a};\n+ return __builtin_aarch64_vec_unpacks_hi_v4sf (__a);\n }\n \n-/* vdupq_n */\n+/* vcvt (<u>fixed-point -> float). */\n \n-__extension__ extern __inline float16x8_t\n+__extension__ extern __inline float64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_n_f16 (float16_t __a)\n+vcvtd_n_f64_s64 (int64_t __a, const int __b)\n {\n- return (float16x8_t) {__a, __a, __a, __a, __a, __a, __a, __a};\n+ return __builtin_aarch64_scvtfdi (__a, __b);\n }\n \n-__extension__ extern __inline float32x4_t\n+__extension__ extern __inline float64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_n_f32 (float32_t __a)\n+vcvtd_n_f64_u64 (uint64_t __a, const int __b)\n {\n- return (float32x4_t) {__a, __a, __a, __a};\n+ return __builtin_aarch64_ucvtfdi_sus (__a, __b);\n }\n \n-__extension__ extern __inline float64x2_t\n+__extension__ extern __inline float32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_n_f64 (float64_t __a)\n+vcvts_n_f32_s32 (int32_t __a, const int __b)\n {\n- return (float64x2_t) {__a, __a};\n+ return __builtin_aarch64_scvtfsi (__a, __b);\n }\n \n-__extension__ extern __inline poly8x16_t\n+__extension__ extern __inline float32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_n_p8 (poly8_t __a)\n+vcvts_n_f32_u32 (uint32_t __a, const int __b)\n {\n- return (poly8x16_t) {__a, __a, __a, __a, __a, __a, __a, __a,\n-\t\t __a, __a, __a, __a, __a, __a, __a, __a};\n+ return __builtin_aarch64_ucvtfsi_sus (__a, __b);\n }\n \n-__extension__ extern __inline poly16x8_t\n+__extension__ extern __inline float32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_n_p16 (poly16_t __a)\n+vcvt_n_f32_s32 (int32x2_t __a, const int __b)\n {\n- return (poly16x8_t) {__a, __a, __a, __a, __a, __a, __a, __a};\n+ return __builtin_aarch64_scvtfv2si (__a, __b);\n }\n \n-__extension__ extern __inline poly64x2_t\n+__extension__ extern __inline float32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_n_p64 (poly64_t __a)\n+vcvt_n_f32_u32 (uint32x2_t __a, const int __b)\n {\n- return (poly64x2_t) {__a, __a};\n+ return __builtin_aarch64_ucvtfv2si_sus (__a, __b);\n }\n \n-__extension__ extern __inline int8x16_t\n+__extension__ extern __inline float64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_n_s8 (int8_t __a)\n+vcvt_n_f64_s64 (int64x1_t __a, const int __b)\n {\n- return (int8x16_t) {__a, __a, __a, __a, __a, __a, __a, __a,\n-\t\t __a, __a, __a, __a, __a, __a, __a, __a};\n+ return (float64x1_t)\n+ { __builtin_aarch64_scvtfdi (vget_lane_s64 (__a, 0), __b) };\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline float64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_n_s16 (int16_t __a)\n+vcvt_n_f64_u64 (uint64x1_t __a, const int __b)\n {\n- return (int16x8_t) {__a, __a, __a, __a, __a, __a, __a, __a};\n+ return (float64x1_t)\n+ { __builtin_aarch64_ucvtfdi_sus (vget_lane_u64 (__a, 0), __b) };\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline float32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_n_s32 (int32_t __a)\n+vcvtq_n_f32_s32 (int32x4_t __a, const int __b)\n {\n- return (int32x4_t) {__a, __a, __a, __a};\n+ return __builtin_aarch64_scvtfv4si (__a, __b);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline float32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_n_s64 (int64_t __a)\n+vcvtq_n_f32_u32 (uint32x4_t __a, const int __b)\n {\n- return (int64x2_t) {__a, __a};\n+ return __builtin_aarch64_ucvtfv4si_sus (__a, __b);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline float64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_n_u8 (uint8_t __a)\n+vcvtq_n_f64_s64 (int64x2_t __a, const int __b)\n {\n- return (uint8x16_t) {__a, __a, __a, __a, __a, __a, __a, __a,\n-\t\t __a, __a, __a, __a, __a, __a, __a, __a};\n+ return __builtin_aarch64_scvtfv2di (__a, __b);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline float64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_n_u16 (uint16_t __a)\n+vcvtq_n_f64_u64 (uint64x2_t __a, const int __b)\n {\n- return (uint16x8_t) {__a, __a, __a, __a, __a, __a, __a, __a};\n+ return __builtin_aarch64_ucvtfv2di_sus (__a, __b);\n }\n \n-__extension__ extern __inline uint32x4_t\n+/* vcvt (float -> <u>fixed-point). */\n+\n+__extension__ extern __inline int64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_n_u32 (uint32_t __a)\n+vcvtd_n_s64_f64 (float64_t __a, const int __b)\n {\n- return (uint32x4_t) {__a, __a, __a, __a};\n+ return __builtin_aarch64_fcvtzsdf (__a, __b);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_n_u64 (uint64_t __a)\n+vcvtd_n_u64_f64 (float64_t __a, const int __b)\n {\n- return (uint64x2_t) {__a, __a};\n+ return __builtin_aarch64_fcvtzudf_uss (__a, __b);\n }\n \n-/* vdup_lane */\n+__extension__ extern __inline int32_t\n+__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n+vcvts_n_s32_f32 (float32_t __a, const int __b)\n+{\n+ return __builtin_aarch64_fcvtzssf (__a, __b);\n+}\n \n-__extension__ extern __inline float16x4_t\n+__extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_lane_f16 (float16x4_t __a, const int __b)\n+vcvts_n_u32_f32 (float32_t __a, const int __b)\n {\n- return __aarch64_vdup_lane_f16 (__a, __b);\n+ return __builtin_aarch64_fcvtzusf_uss (__a, __b);\n }\n \n-__extension__ extern __inline float32x2_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_lane_f32 (float32x2_t __a, const int __b)\n+vcvt_n_s32_f32 (float32x2_t __a, const int __b)\n {\n- return __aarch64_vdup_lane_f32 (__a, __b);\n+ return __builtin_aarch64_fcvtzsv2sf (__a, __b);\n }\n \n-__extension__ extern __inline float64x1_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_lane_f64 (float64x1_t __a, const int __b)\n+vcvt_n_u32_f32 (float32x2_t __a, const int __b)\n {\n- return __aarch64_vdup_lane_f64 (__a, __b);\n+ return __builtin_aarch64_fcvtzuv2sf_uss (__a, __b);\n }\n \n-__extension__ extern __inline poly8x8_t\n+__extension__ extern __inline int64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_lane_p8 (poly8x8_t __a, const int __b)\n+vcvt_n_s64_f64 (float64x1_t __a, const int __b)\n {\n- return __aarch64_vdup_lane_p8 (__a, __b);\n+ return (int64x1_t)\n+ { __builtin_aarch64_fcvtzsdf (vget_lane_f64 (__a, 0), __b) };\n }\n \n-__extension__ extern __inline poly16x4_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_lane_p16 (poly16x4_t __a, const int __b)\n+vcvt_n_u64_f64 (float64x1_t __a, const int __b)\n {\n- return __aarch64_vdup_lane_p16 (__a, __b);\n+ return (uint64x1_t)\n+ { __builtin_aarch64_fcvtzudf_uss (vget_lane_f64 (__a, 0), __b) };\n }\n \n-__extension__ extern __inline poly64x1_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_lane_p64 (poly64x1_t __a, const int __b)\n+vcvtq_n_s32_f32 (float32x4_t __a, const int __b)\n {\n- return __aarch64_vdup_lane_p64 (__a, __b);\n+ return __builtin_aarch64_fcvtzsv4sf (__a, __b);\n }\n \n-__extension__ extern __inline int8x8_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_lane_s8 (int8x8_t __a, const int __b)\n+vcvtq_n_u32_f32 (float32x4_t __a, const int __b)\n {\n- return __aarch64_vdup_lane_s8 (__a, __b);\n+ return __builtin_aarch64_fcvtzuv4sf_uss (__a, __b);\n }\n \n-__extension__ extern __inline int16x4_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_lane_s16 (int16x4_t __a, const int __b)\n+vcvtq_n_s64_f64 (float64x2_t __a, const int __b)\n {\n- return __aarch64_vdup_lane_s16 (__a, __b);\n+ return __builtin_aarch64_fcvtzsv2df (__a, __b);\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_lane_s32 (int32x2_t __a, const int __b)\n+vcvtq_n_u64_f64 (float64x2_t __a, const int __b)\n {\n- return __aarch64_vdup_lane_s32 (__a, __b);\n+ return __builtin_aarch64_fcvtzuv2df_uss (__a, __b);\n }\n \n-__extension__ extern __inline int64x1_t\n+/* vcvt (<u>int -> float) */\n+\n+__extension__ extern __inline float64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_lane_s64 (int64x1_t __a, const int __b)\n+vcvtd_f64_s64 (int64_t __a)\n {\n- return __aarch64_vdup_lane_s64 (__a, __b);\n+ return (float64_t) __a;\n }\n \n-__extension__ extern __inline uint8x8_t\n+__extension__ extern __inline float64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_lane_u8 (uint8x8_t __a, const int __b)\n+vcvtd_f64_u64 (uint64_t __a)\n {\n- return __aarch64_vdup_lane_u8 (__a, __b);\n+ return (float64_t) __a;\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline float32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_lane_u16 (uint16x4_t __a, const int __b)\n+vcvts_f32_s32 (int32_t __a)\n {\n- return __aarch64_vdup_lane_u16 (__a, __b);\n+ return (float32_t) __a;\n }\n \n-__extension__ extern __inline uint32x2_t\n+__extension__ extern __inline float32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_lane_u32 (uint32x2_t __a, const int __b)\n+vcvts_f32_u32 (uint32_t __a)\n {\n- return __aarch64_vdup_lane_u32 (__a, __b);\n+ return (float32_t) __a;\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline float32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_lane_u64 (uint64x1_t __a, const int __b)\n+vcvt_f32_s32 (int32x2_t __a)\n {\n- return __aarch64_vdup_lane_u64 (__a, __b);\n+ return __builtin_aarch64_floatv2siv2sf (__a);\n }\n \n-/* vdup_laneq */\n-\n-__extension__ extern __inline float16x4_t\n+__extension__ extern __inline float32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_laneq_f16 (float16x8_t __a, const int __b)\n+vcvt_f32_u32 (uint32x2_t __a)\n {\n- return __aarch64_vdup_laneq_f16 (__a, __b);\n+ return __builtin_aarch64_floatunsv2siv2sf ((int32x2_t) __a);\n }\n \n-__extension__ extern __inline float32x2_t\n+__extension__ extern __inline float64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_laneq_f32 (float32x4_t __a, const int __b)\n+vcvt_f64_s64 (int64x1_t __a)\n {\n- return __aarch64_vdup_laneq_f32 (__a, __b);\n+ return (float64x1_t) { vget_lane_s64 (__a, 0) };\n }\n \n __extension__ extern __inline float64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_laneq_f64 (float64x2_t __a, const int __b)\n+vcvt_f64_u64 (uint64x1_t __a)\n {\n- return __aarch64_vdup_laneq_f64 (__a, __b);\n+ return (float64x1_t) { vget_lane_u64 (__a, 0) };\n }\n \n-__extension__ extern __inline poly8x8_t\n+__extension__ extern __inline float32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_laneq_p8 (poly8x16_t __a, const int __b)\n+vcvtq_f32_s32 (int32x4_t __a)\n {\n- return __aarch64_vdup_laneq_p8 (__a, __b);\n+ return __builtin_aarch64_floatv4siv4sf (__a);\n }\n \n-__extension__ extern __inline poly16x4_t\n+__extension__ extern __inline float32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_laneq_p16 (poly16x8_t __a, const int __b)\n+vcvtq_f32_u32 (uint32x4_t __a)\n {\n- return __aarch64_vdup_laneq_p16 (__a, __b);\n+ return __builtin_aarch64_floatunsv4siv4sf ((int32x4_t) __a);\n }\n \n-__extension__ extern __inline poly64x1_t\n+__extension__ extern __inline float64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_laneq_p64 (poly64x2_t __a, const int __b)\n+vcvtq_f64_s64 (int64x2_t __a)\n {\n- return __aarch64_vdup_laneq_p64 (__a, __b);\n+ return __builtin_aarch64_floatv2div2df (__a);\n }\n \n-__extension__ extern __inline int8x8_t\n+__extension__ extern __inline float64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_laneq_s8 (int8x16_t __a, const int __b)\n+vcvtq_f64_u64 (uint64x2_t __a)\n {\n- return __aarch64_vdup_laneq_s8 (__a, __b);\n+ return __builtin_aarch64_floatunsv2div2df ((int64x2_t) __a);\n }\n \n-__extension__ extern __inline int16x4_t\n+/* vcvt (float -> <u>int) */\n+\n+__extension__ extern __inline int64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_laneq_s16 (int16x8_t __a, const int __b)\n+vcvtd_s64_f64 (float64_t __a)\n {\n- return __aarch64_vdup_laneq_s16 (__a, __b);\n+ return (int64_t) __a;\n }\n \n-__extension__ extern __inline int32x2_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_laneq_s32 (int32x4_t __a, const int __b)\n+vcvtd_u64_f64 (float64_t __a)\n {\n- return __aarch64_vdup_laneq_s32 (__a, __b);\n+ return (uint64_t) __a;\n }\n \n-__extension__ extern __inline int64x1_t\n+__extension__ extern __inline int32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_laneq_s64 (int64x2_t __a, const int __b)\n+vcvts_s32_f32 (float32_t __a)\n {\n- return __aarch64_vdup_laneq_s64 (__a, __b);\n+ return (int32_t) __a;\n }\n \n-__extension__ extern __inline uint8x8_t\n+__extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_laneq_u8 (uint8x16_t __a, const int __b)\n+vcvts_u32_f32 (float32_t __a)\n {\n- return __aarch64_vdup_laneq_u8 (__a, __b);\n+ return (uint32_t) __a;\n }\n \n-__extension__ extern __inline uint16x4_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_laneq_u16 (uint16x8_t __a, const int __b)\n+vcvt_s32_f32 (float32x2_t __a)\n {\n- return __aarch64_vdup_laneq_u16 (__a, __b);\n+ return __builtin_aarch64_lbtruncv2sfv2si (__a);\n }\n \n __extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_laneq_u32 (uint32x4_t __a, const int __b)\n+vcvt_u32_f32 (float32x2_t __a)\n {\n- return __aarch64_vdup_laneq_u32 (__a, __b);\n+ return __builtin_aarch64_lbtruncuv2sfv2si_us (__a);\n }\n \n-__extension__ extern __inline uint64x1_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_laneq_u64 (uint64x2_t __a, const int __b)\n+vcvtq_s32_f32 (float32x4_t __a)\n {\n- return __aarch64_vdup_laneq_u64 (__a, __b);\n+ return __builtin_aarch64_lbtruncv4sfv4si (__a);\n }\n \n-/* vdupq_lane */\n-\n-__extension__ extern __inline float16x8_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_lane_f16 (float16x4_t __a, const int __b)\n+vcvtq_u32_f32 (float32x4_t __a)\n {\n- return __aarch64_vdupq_lane_f16 (__a, __b);\n+ return __builtin_aarch64_lbtruncuv4sfv4si_us (__a);\n }\n \n-__extension__ extern __inline float32x4_t\n+__extension__ extern __inline int64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_lane_f32 (float32x2_t __a, const int __b)\n+vcvt_s64_f64 (float64x1_t __a)\n {\n- return __aarch64_vdupq_lane_f32 (__a, __b);\n+ return (int64x1_t) {vcvtd_s64_f64 (__a[0])};\n }\n \n-__extension__ extern __inline float64x2_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_lane_f64 (float64x1_t __a, const int __b)\n+vcvt_u64_f64 (float64x1_t __a)\n {\n- return __aarch64_vdupq_lane_f64 (__a, __b);\n+ return (uint64x1_t) {vcvtd_u64_f64 (__a[0])};\n }\n \n-__extension__ extern __inline poly8x16_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_lane_p8 (poly8x8_t __a, const int __b)\n+vcvtq_s64_f64 (float64x2_t __a)\n {\n- return __aarch64_vdupq_lane_p8 (__a, __b);\n+ return __builtin_aarch64_lbtruncv2dfv2di (__a);\n }\n \n-__extension__ extern __inline poly16x8_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_lane_p16 (poly16x4_t __a, const int __b)\n+vcvtq_u64_f64 (float64x2_t __a)\n {\n- return __aarch64_vdupq_lane_p16 (__a, __b);\n+ return __builtin_aarch64_lbtruncuv2dfv2di_us (__a);\n }\n \n-__extension__ extern __inline poly64x2_t\n+/* vcvta */\n+\n+__extension__ extern __inline int64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_lane_p64 (poly64x1_t __a, const int __b)\n+vcvtad_s64_f64 (float64_t __a)\n {\n- return __aarch64_vdupq_lane_p64 (__a, __b);\n+ return __builtin_aarch64_lrounddfdi (__a);\n }\n \n-__extension__ extern __inline int8x16_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_lane_s8 (int8x8_t __a, const int __b)\n+vcvtad_u64_f64 (float64_t __a)\n {\n- return __aarch64_vdupq_lane_s8 (__a, __b);\n+ return __builtin_aarch64_lroundudfdi_us (__a);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline int32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_lane_s16 (int16x4_t __a, const int __b)\n+vcvtas_s32_f32 (float32_t __a)\n {\n- return __aarch64_vdupq_lane_s16 (__a, __b);\n+ return __builtin_aarch64_lroundsfsi (__a);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_lane_s32 (int32x2_t __a, const int __b)\n+vcvtas_u32_f32 (float32_t __a)\n {\n- return __aarch64_vdupq_lane_s32 (__a, __b);\n+ return __builtin_aarch64_lroundusfsi_us (__a);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_lane_s64 (int64x1_t __a, const int __b)\n+vcvta_s32_f32 (float32x2_t __a)\n {\n- return __aarch64_vdupq_lane_s64 (__a, __b);\n+ return __builtin_aarch64_lroundv2sfv2si (__a);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_lane_u8 (uint8x8_t __a, const int __b)\n+vcvta_u32_f32 (float32x2_t __a)\n {\n- return __aarch64_vdupq_lane_u8 (__a, __b);\n+ return __builtin_aarch64_lrounduv2sfv2si_us (__a);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_lane_u16 (uint16x4_t __a, const int __b)\n+vcvtaq_s32_f32 (float32x4_t __a)\n {\n- return __aarch64_vdupq_lane_u16 (__a, __b);\n+ return __builtin_aarch64_lroundv4sfv4si (__a);\n }\n \n __extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_lane_u32 (uint32x2_t __a, const int __b)\n+vcvtaq_u32_f32 (float32x4_t __a)\n {\n- return __aarch64_vdupq_lane_u32 (__a, __b);\n+ return __builtin_aarch64_lrounduv4sfv4si_us (__a);\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline int64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_lane_u64 (uint64x1_t __a, const int __b)\n+vcvta_s64_f64 (float64x1_t __a)\n {\n- return __aarch64_vdupq_lane_u64 (__a, __b);\n+ return (int64x1_t) {vcvtad_s64_f64 (__a[0])};\n }\n \n-/* vdupq_laneq */\n-\n-__extension__ extern __inline float16x8_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_laneq_f16 (float16x8_t __a, const int __b)\n+vcvta_u64_f64 (float64x1_t __a)\n {\n- return __aarch64_vdupq_laneq_f16 (__a, __b);\n+ return (uint64x1_t) {vcvtad_u64_f64 (__a[0])};\n }\n \n-__extension__ extern __inline float32x4_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_laneq_f32 (float32x4_t __a, const int __b)\n+vcvtaq_s64_f64 (float64x2_t __a)\n {\n- return __aarch64_vdupq_laneq_f32 (__a, __b);\n+ return __builtin_aarch64_lroundv2dfv2di (__a);\n }\n \n-__extension__ extern __inline float64x2_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_laneq_f64 (float64x2_t __a, const int __b)\n+vcvtaq_u64_f64 (float64x2_t __a)\n {\n- return __aarch64_vdupq_laneq_f64 (__a, __b);\n+ return __builtin_aarch64_lrounduv2dfv2di_us (__a);\n }\n \n-__extension__ extern __inline poly8x16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_laneq_p8 (poly8x16_t __a, const int __b)\n-{\n- return __aarch64_vdupq_laneq_p8 (__a, __b);\n-}\n+/* vcvtm */\n \n-__extension__ extern __inline poly16x8_t\n+__extension__ extern __inline int64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_laneq_p16 (poly16x8_t __a, const int __b)\n+vcvtmd_s64_f64 (float64_t __a)\n {\n- return __aarch64_vdupq_laneq_p16 (__a, __b);\n+ return __builtin_llfloor (__a);\n }\n \n-__extension__ extern __inline poly64x2_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_laneq_p64 (poly64x2_t __a, const int __b)\n+vcvtmd_u64_f64 (float64_t __a)\n {\n- return __aarch64_vdupq_laneq_p64 (__a, __b);\n+ return __builtin_aarch64_lfloorudfdi_us (__a);\n }\n \n-__extension__ extern __inline int8x16_t\n+__extension__ extern __inline int32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_laneq_s8 (int8x16_t __a, const int __b)\n+vcvtms_s32_f32 (float32_t __a)\n {\n- return __aarch64_vdupq_laneq_s8 (__a, __b);\n+ return __builtin_ifloorf (__a);\n }\n \n-__extension__ extern __inline int16x8_t\n+__extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_laneq_s16 (int16x8_t __a, const int __b)\n+vcvtms_u32_f32 (float32_t __a)\n {\n- return __aarch64_vdupq_laneq_s16 (__a, __b);\n+ return __builtin_aarch64_lfloorusfsi_us (__a);\n }\n \n-__extension__ extern __inline int32x4_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_laneq_s32 (int32x4_t __a, const int __b)\n+vcvtm_s32_f32 (float32x2_t __a)\n {\n- return __aarch64_vdupq_laneq_s32 (__a, __b);\n+ return __builtin_aarch64_lfloorv2sfv2si (__a);\n }\n \n-__extension__ extern __inline int64x2_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_laneq_s64 (int64x2_t __a, const int __b)\n+vcvtm_u32_f32 (float32x2_t __a)\n {\n- return __aarch64_vdupq_laneq_s64 (__a, __b);\n+ return __builtin_aarch64_lflooruv2sfv2si_us (__a);\n }\n \n-__extension__ extern __inline uint8x16_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_laneq_u8 (uint8x16_t __a, const int __b)\n+vcvtmq_s32_f32 (float32x4_t __a)\n {\n- return __aarch64_vdupq_laneq_u8 (__a, __b);\n+ return __builtin_aarch64_lfloorv4sfv4si (__a);\n }\n \n-__extension__ extern __inline uint16x8_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_laneq_u16 (uint16x8_t __a, const int __b)\n+vcvtmq_u32_f32 (float32x4_t __a)\n {\n- return __aarch64_vdupq_laneq_u16 (__a, __b);\n+ return __builtin_aarch64_lflooruv4sfv4si_us (__a);\n }\n \n-__extension__ extern __inline uint32x4_t\n+__extension__ extern __inline int64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_laneq_u32 (uint32x4_t __a, const int __b)\n+vcvtm_s64_f64 (float64x1_t __a)\n {\n- return __aarch64_vdupq_laneq_u32 (__a, __b);\n+ return (int64x1_t) {vcvtmd_s64_f64 (__a[0])};\n }\n \n-__extension__ extern __inline uint64x2_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_laneq_u64 (uint64x2_t __a, const int __b)\n+vcvtm_u64_f64 (float64x1_t __a)\n {\n- return __aarch64_vdupq_laneq_u64 (__a, __b);\n+ return (uint64x1_t) {vcvtmd_u64_f64 (__a[0])};\n }\n \n-/* vdupb_lane */\n-__extension__ extern __inline poly8_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupb_lane_p8 (poly8x8_t __a, const int __b)\n+vcvtmq_s64_f64 (float64x2_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_lfloorv2dfv2di (__a);\n }\n \n-__extension__ extern __inline int8_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupb_lane_s8 (int8x8_t __a, const int __b)\n+vcvtmq_u64_f64 (float64x2_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_lflooruv2dfv2di_us (__a);\n }\n \n-__extension__ extern __inline uint8_t\n+/* vcvtn */\n+\n+__extension__ extern __inline int64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupb_lane_u8 (uint8x8_t __a, const int __b)\n+vcvtnd_s64_f64 (float64_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_lfrintndfdi (__a);\n }\n \n-/* vduph_lane */\n-\n-__extension__ extern __inline float16_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vduph_lane_f16 (float16x4_t __a, const int __b)\n+vcvtnd_u64_f64 (float64_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_lfrintnudfdi_us (__a);\n }\n \n-__extension__ extern __inline poly16_t\n+__extension__ extern __inline int32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vduph_lane_p16 (poly16x4_t __a, const int __b)\n+vcvtns_s32_f32 (float32_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_lfrintnsfsi (__a);\n }\n \n-__extension__ extern __inline int16_t\n+__extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vduph_lane_s16 (int16x4_t __a, const int __b)\n+vcvtns_u32_f32 (float32_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_lfrintnusfsi_us (__a);\n }\n \n-__extension__ extern __inline uint16_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vduph_lane_u16 (uint16x4_t __a, const int __b)\n+vcvtn_s32_f32 (float32x2_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_lfrintnv2sfv2si (__a);\n }\n \n-/* vdups_lane */\n-\n-__extension__ extern __inline float32_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdups_lane_f32 (float32x2_t __a, const int __b)\n+vcvtn_u32_f32 (float32x2_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_lfrintnuv2sfv2si_us (__a);\n }\n \n-__extension__ extern __inline int32_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdups_lane_s32 (int32x2_t __a, const int __b)\n+vcvtnq_s32_f32 (float32x4_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_lfrintnv4sfv4si (__a);\n }\n \n-__extension__ extern __inline uint32_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdups_lane_u32 (uint32x2_t __a, const int __b)\n+vcvtnq_u32_f32 (float32x4_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_lfrintnuv4sfv4si_us (__a);\n }\n \n-/* vdupd_lane */\n-__extension__ extern __inline float64_t\n+__extension__ extern __inline int64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupd_lane_f64 (float64x1_t __a, const int __b)\n+vcvtn_s64_f64 (float64x1_t __a)\n {\n- __AARCH64_LANE_CHECK (__a, __b);\n- return __a[0];\n+ return (int64x1_t) {vcvtnd_s64_f64 (__a[0])};\n }\n \n-__extension__ extern __inline int64_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupd_lane_s64 (int64x1_t __a, const int __b)\n+vcvtn_u64_f64 (float64x1_t __a)\n {\n- __AARCH64_LANE_CHECK (__a, __b);\n- return __a[0];\n+ return (uint64x1_t) {vcvtnd_u64_f64 (__a[0])};\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupd_lane_u64 (uint64x1_t __a, const int __b)\n+vcvtnq_s64_f64 (float64x2_t __a)\n {\n- __AARCH64_LANE_CHECK (__a, __b);\n- return __a[0];\n+ return __builtin_aarch64_lfrintnv2dfv2di (__a);\n }\n \n-/* vdupb_laneq */\n-__extension__ extern __inline poly8_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupb_laneq_p8 (poly8x16_t __a, const int __b)\n+vcvtnq_u64_f64 (float64x2_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_lfrintnuv2dfv2di_us (__a);\n }\n \n-__extension__ extern __inline int8_t\n+/* vcvtp */\n+\n+__extension__ extern __inline int64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupb_laneq_s8 (int8x16_t __a, const int __b)\n+vcvtpd_s64_f64 (float64_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_llceil (__a);\n }\n \n-__extension__ extern __inline uint8_t\n+__extension__ extern __inline uint64_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupb_laneq_u8 (uint8x16_t __a, const int __b)\n+vcvtpd_u64_f64 (float64_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_lceiludfdi_us (__a);\n }\n \n-/* vduph_laneq */\n-\n-__extension__ extern __inline float16_t\n+__extension__ extern __inline int32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vduph_laneq_f16 (float16x8_t __a, const int __b)\n+vcvtps_s32_f32 (float32_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_iceilf (__a);\n }\n \n-__extension__ extern __inline poly16_t\n+__extension__ extern __inline uint32_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vduph_laneq_p16 (poly16x8_t __a, const int __b)\n+vcvtps_u32_f32 (float32_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_lceilusfsi_us (__a);\n }\n \n-__extension__ extern __inline int16_t\n+__extension__ extern __inline int32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vduph_laneq_s16 (int16x8_t __a, const int __b)\n+vcvtp_s32_f32 (float32x2_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_lceilv2sfv2si (__a);\n }\n \n-__extension__ extern __inline uint16_t\n+__extension__ extern __inline uint32x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vduph_laneq_u16 (uint16x8_t __a, const int __b)\n+vcvtp_u32_f32 (float32x2_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_lceiluv2sfv2si_us (__a);\n }\n \n-/* vdups_laneq */\n-\n-__extension__ extern __inline float32_t\n+__extension__ extern __inline int32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdups_laneq_f32 (float32x4_t __a, const int __b)\n+vcvtpq_s32_f32 (float32x4_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_lceilv4sfv4si (__a);\n }\n \n-__extension__ extern __inline int32_t\n+__extension__ extern __inline uint32x4_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdups_laneq_s32 (int32x4_t __a, const int __b)\n+vcvtpq_u32_f32 (float32x4_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_lceiluv4sfv4si_us (__a);\n }\n \n-__extension__ extern __inline uint32_t\n+__extension__ extern __inline int64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdups_laneq_u32 (uint32x4_t __a, const int __b)\n+vcvtp_s64_f64 (float64x1_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return (int64x1_t) {vcvtpd_s64_f64 (__a[0])};\n }\n \n-/* vdupd_laneq */\n-__extension__ extern __inline float64_t\n+__extension__ extern __inline uint64x1_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupd_laneq_f64 (float64x2_t __a, const int __b)\n+vcvtp_u64_f64 (float64x1_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return (uint64x1_t) {vcvtpd_u64_f64 (__a[0])};\n }\n \n-__extension__ extern __inline int64_t\n+__extension__ extern __inline int64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupd_laneq_s64 (int64x2_t __a, const int __b)\n+vcvtpq_s64_f64 (float64x2_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_lceilv2dfv2di (__a);\n }\n \n-__extension__ extern __inline uint64_t\n+__extension__ extern __inline uint64x2_t\n __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupd_laneq_u64 (uint64x2_t __a, const int __b)\n+vcvtpq_u64_f64 (float64x2_t __a)\n {\n- return __aarch64_vget_lane_any (__a, __b);\n+ return __builtin_aarch64_lceiluv2dfv2di_us (__a);\n }\n \n /* vext */\n@@ -16566,204 +14605,6 @@ vmlsq_laneq_u32 (uint32x4_t __a, uint32x4_t __b,\n return (__a - (__b * __aarch64_vget_lane_any (__c, __lane)));\n }\n \n-/* vmov_n_ */\n-\n-__extension__ extern __inline float16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmov_n_f16 (float16_t __a)\n-{\n- return vdup_n_f16 (__a);\n-}\n-\n-__extension__ extern __inline float32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmov_n_f32 (float32_t __a)\n-{\n- return vdup_n_f32 (__a);\n-}\n-\n-__extension__ extern __inline float64x1_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmov_n_f64 (float64_t __a)\n-{\n- return (float64x1_t) {__a};\n-}\n-\n-__extension__ extern __inline poly8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmov_n_p8 (poly8_t __a)\n-{\n- return vdup_n_p8 (__a);\n-}\n-\n-__extension__ extern __inline poly16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmov_n_p16 (poly16_t __a)\n-{\n- return vdup_n_p16 (__a);\n-}\n-\n-__extension__ extern __inline poly64x1_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmov_n_p64 (poly64_t __a)\n-{\n- return vdup_n_p64 (__a);\n-}\n-\n-__extension__ extern __inline int8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmov_n_s8 (int8_t __a)\n-{\n- return vdup_n_s8 (__a);\n-}\n-\n-__extension__ extern __inline int16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmov_n_s16 (int16_t __a)\n-{\n- return vdup_n_s16 (__a);\n-}\n-\n-__extension__ extern __inline int32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmov_n_s32 (int32_t __a)\n-{\n- return vdup_n_s32 (__a);\n-}\n-\n-__extension__ extern __inline int64x1_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmov_n_s64 (int64_t __a)\n-{\n- return (int64x1_t) {__a};\n-}\n-\n-__extension__ extern __inline uint8x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmov_n_u8 (uint8_t __a)\n-{\n- return vdup_n_u8 (__a);\n-}\n-\n-__extension__ extern __inline uint16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmov_n_u16 (uint16_t __a)\n-{\n- return vdup_n_u16 (__a);\n-}\n-\n-__extension__ extern __inline uint32x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmov_n_u32 (uint32_t __a)\n-{\n- return vdup_n_u32 (__a);\n-}\n-\n-__extension__ extern __inline uint64x1_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmov_n_u64 (uint64_t __a)\n-{\n- return (uint64x1_t) {__a};\n-}\n-\n-__extension__ extern __inline float16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovq_n_f16 (float16_t __a)\n-{\n- return vdupq_n_f16 (__a);\n-}\n-\n-__extension__ extern __inline float32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovq_n_f32 (float32_t __a)\n-{\n- return vdupq_n_f32 (__a);\n-}\n-\n-__extension__ extern __inline float64x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovq_n_f64 (float64_t __a)\n-{\n- return vdupq_n_f64 (__a);\n-}\n-\n-__extension__ extern __inline poly8x16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovq_n_p8 (poly8_t __a)\n-{\n- return vdupq_n_p8 (__a);\n-}\n-\n-__extension__ extern __inline poly16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovq_n_p16 (poly16_t __a)\n-{\n- return vdupq_n_p16 (__a);\n-}\n-\n-__extension__ extern __inline poly64x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovq_n_p64 (poly64_t __a)\n-{\n- return vdupq_n_p64 (__a);\n-}\n-\n-__extension__ extern __inline int8x16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovq_n_s8 (int8_t __a)\n-{\n- return vdupq_n_s8 (__a);\n-}\n-\n-__extension__ extern __inline int16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovq_n_s16 (int16_t __a)\n-{\n- return vdupq_n_s16 (__a);\n-}\n-\n-__extension__ extern __inline int32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovq_n_s32 (int32_t __a)\n-{\n- return vdupq_n_s32 (__a);\n-}\n-\n-__extension__ extern __inline int64x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovq_n_s64 (int64_t __a)\n-{\n- return vdupq_n_s64 (__a);\n-}\n-\n-__extension__ extern __inline uint8x16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovq_n_u8 (uint8_t __a)\n-{\n- return vdupq_n_u8 (__a);\n-}\n-\n-__extension__ extern __inline uint16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovq_n_u16 (uint16_t __a)\n-{\n- return vdupq_n_u16 (__a);\n-}\n-\n-__extension__ extern __inline uint32x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovq_n_u32 (uint32_t __a)\n-{\n- return vdupq_n_u32 (__a);\n-}\n-\n-__extension__ extern __inline uint64x2_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vmovq_n_u64 (uint64_t __a)\n-{\n- return vdupq_n_u64 (__a);\n-}\n-\n /* vmul_lane */\n \n __extension__ extern __inline float32x2_t\n@@ -27605,106 +25446,6 @@ vrnd64xq_f64 (float64x2_t __a)\n #pragma GCC push_options\n #pragma GCC target (\"+nothing+bf16\")\n \n-__extension__ extern __inline bfloat16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vset_lane_bf16 (bfloat16_t __elem, bfloat16x4_t __vec, const int __index)\n-{\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n-}\n-\n-__extension__ extern __inline bfloat16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vsetq_lane_bf16 (bfloat16_t __elem, bfloat16x8_t __vec, const int __index)\n-{\n- return __aarch64_vset_lane_any (__elem, __vec, __index);\n-}\n-\n-__extension__ extern __inline bfloat16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vget_lane_bf16 (bfloat16x4_t __a, const int __b)\n-{\n- return __aarch64_vget_lane_any (__a, __b);\n-}\n-\n-__extension__ extern __inline bfloat16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vgetq_lane_bf16 (bfloat16x8_t __a, const int __b)\n-{\n- return __aarch64_vget_lane_any (__a, __b);\n-}\n-\n-__extension__ extern __inline bfloat16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcreate_bf16 (uint64_t __a)\n-{\n- return (bfloat16x4_t) __a;\n-}\n-\n-__extension__ extern __inline bfloat16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcombine_bf16 (bfloat16x4_t __a, bfloat16x4_t __b)\n-{\n- return __builtin_aarch64_combinev4bf (__a, __b);\n-}\n-\n-/* vdup */\n-\n-__extension__ extern __inline bfloat16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_n_bf16 (bfloat16_t __a)\n-{\n- return (bfloat16x4_t) {__a, __a, __a, __a};\n-}\n-\n-__extension__ extern __inline bfloat16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_n_bf16 (bfloat16_t __a)\n-{\n- return (bfloat16x8_t) {__a, __a, __a, __a, __a, __a, __a, __a};\n-}\n-\n-__extension__ extern __inline bfloat16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_lane_bf16 (bfloat16x4_t __a, const int __b)\n-{\n- return vdup_n_bf16 (__aarch64_vget_lane_any (__a, __b));\n-}\n-\n-__extension__ extern __inline bfloat16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdup_laneq_bf16 (bfloat16x8_t __a, const int __b)\n-{\n- return vdup_n_bf16 (__aarch64_vget_lane_any (__a, __b));\n-}\n-\n-__extension__ extern __inline bfloat16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_lane_bf16 (bfloat16x4_t __a, const int __b)\n-{\n- return vdupq_n_bf16 (__aarch64_vget_lane_any (__a, __b));\n-}\n-\n-__extension__ extern __inline bfloat16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vdupq_laneq_bf16 (bfloat16x8_t __a, const int __b)\n-{\n- return vdupq_n_bf16 (__aarch64_vget_lane_any (__a, __b));\n-}\n-\n-__extension__ extern __inline bfloat16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vduph_lane_bf16 (bfloat16x4_t __a, const int __b)\n-{\n- return __aarch64_vget_lane_any (__a, __b);\n-}\n-\n-__extension__ extern __inline bfloat16_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vduph_laneq_bf16 (bfloat16x8_t __a, const int __b)\n-{\n- return __aarch64_vget_lane_any (__a, __b);\n-}\n-\n /* vld */\n \n __extension__ extern __inline bfloat16x4_t\n@@ -28131,42 +25872,6 @@ vcvtq_high_bf16_f32 (bfloat16x8_t __inactive, float32x4_t __a)\n return __builtin_aarch64_bfcvtn2v8bf (__inactive, __a);\n }\n \n-__extension__ extern __inline bfloat16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_lane_bf16 (bfloat16x4_t __a, const int __lane1,\n-\t\t bfloat16x4_t __b, const int __lane2)\n-{\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n-}\n-\n-__extension__ extern __inline bfloat16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_lane_bf16 (bfloat16x8_t __a, const int __lane1,\n-\t\t bfloat16x4_t __b, const int __lane2)\n-{\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n-}\n-\n-__extension__ extern __inline bfloat16x4_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopy_laneq_bf16 (bfloat16x4_t __a, const int __lane1,\n-\t\t bfloat16x8_t __b, const int __lane2)\n-{\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n-}\n-\n-__extension__ extern __inline bfloat16x8_t\n-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))\n-vcopyq_laneq_bf16 (bfloat16x8_t __a, const int __lane1,\n-\t\t bfloat16x8_t __b, const int __lane2)\n-{\n- return __aarch64_vset_lane_any (__aarch64_vget_lane_any (__b, __lane2),\n-\t\t\t\t __a, __lane1);\n-}\n-\n __extension__ extern __inline bfloat16x4x2_t\n __attribute__ ((__always_inline__, __gnu_inline__,__artificial__))\n vld2_lane_bf16 (const bfloat16_t * __ptr, bfloat16x4x2_t __b, const int __c)\n@@ -28377,54 +26082,14 @@ vusmmlaq_s32 (int32x4_t __r, uint8x16_t __a, int8x16_t __b)\n #undef __aarch64_vdup_lane_f16\n #undef __aarch64_vdup_lane_f32\n #undef __aarch64_vdup_lane_f64\n-#undef __aarch64_vdup_lane_p8\n-#undef __aarch64_vdup_lane_p16\n-#undef __aarch64_vdup_lane_s8\n-#undef __aarch64_vdup_lane_s16\n-#undef __aarch64_vdup_lane_s32\n-#undef __aarch64_vdup_lane_s64\n-#undef __aarch64_vdup_lane_u8\n-#undef __aarch64_vdup_lane_u16\n-#undef __aarch64_vdup_lane_u32\n-#undef __aarch64_vdup_lane_u64\n #undef __aarch64_vdup_laneq_f16\n #undef __aarch64_vdup_laneq_f32\n #undef __aarch64_vdup_laneq_f64\n-#undef __aarch64_vdup_laneq_p8\n-#undef __aarch64_vdup_laneq_p16\n-#undef __aarch64_vdup_laneq_s8\n-#undef __aarch64_vdup_laneq_s16\n-#undef __aarch64_vdup_laneq_s32\n-#undef __aarch64_vdup_laneq_s64\n-#undef __aarch64_vdup_laneq_u8\n-#undef __aarch64_vdup_laneq_u16\n-#undef __aarch64_vdup_laneq_u32\n-#undef __aarch64_vdup_laneq_u64\n #undef __aarch64_vdupq_lane_f16\n #undef __aarch64_vdupq_lane_f32\n #undef __aarch64_vdupq_lane_f64\n-#undef __aarch64_vdupq_lane_p8\n-#undef __aarch64_vdupq_lane_p16\n-#undef __aarch64_vdupq_lane_s8\n-#undef __aarch64_vdupq_lane_s16\n-#undef __aarch64_vdupq_lane_s32\n-#undef __aarch64_vdupq_lane_s64\n-#undef __aarch64_vdupq_lane_u8\n-#undef __aarch64_vdupq_lane_u16\n-#undef __aarch64_vdupq_lane_u32\n-#undef __aarch64_vdupq_lane_u64\n #undef __aarch64_vdupq_laneq_f16\n #undef __aarch64_vdupq_laneq_f32\n #undef __aarch64_vdupq_laneq_f64\n-#undef __aarch64_vdupq_laneq_p8\n-#undef __aarch64_vdupq_laneq_p16\n-#undef __aarch64_vdupq_laneq_s8\n-#undef __aarch64_vdupq_laneq_s16\n-#undef __aarch64_vdupq_laneq_s32\n-#undef __aarch64_vdupq_laneq_s64\n-#undef __aarch64_vdupq_laneq_u8\n-#undef __aarch64_vdupq_laneq_u16\n-#undef __aarch64_vdupq_laneq_u32\n-#undef __aarch64_vdupq_laneq_u64\n \n #endif\ndiff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md\nindex 39b1e84edcc2..3ff7bef242a4 100644\n--- a/gcc/config/aarch64/iterators.md\n+++ b/gcc/config/aarch64/iterators.md\n@@ -233,7 +233,7 @@\n \n ;; The VALL_F16 modes except the 128-bit 2-element ones.\n (define_mode_iterator VALL_F16_NO_V2Q [V8QI V16QI V4HI V8HI V2SI V4SI\n-\t\t\t\tV4HF V8HF V2SF V4SF])\n+\t\t\t\tV4HF V8HF V4BF V8BF V2SF V4SF])\n \n ;; All Advanced SIMD modes barring HF modes, plus DI.\n (define_mode_iterator VALLDI [V8QI V16QI V4HI V8HI V2SI V4SI V2DI V2SF V4SF V2DF DI])\ndiff --git a/gcc/testsuite/g++.target/aarch64/lane-bound-1.C b/gcc/testsuite/g++.target/aarch64/lane-bound-1.C\nindex cb3e99816a1c..0312ad969860 100644\n--- a/gcc/testsuite/g++.target/aarch64/lane-bound-1.C\n+++ b/gcc/testsuite/g++.target/aarch64/lane-bound-1.C\n@@ -12,7 +12,7 @@ void hh(uint64x2_t c, int __b)\n {\n try {\n vgetq_lane_u64(c, __b);\n- // { dg-error \"must be a constant immediate\" \"\" { target *-*-* } 0 }\n+ // { dg-error \"must be an integer constant expression\" \"\" { target *-*-* } 0 }\n } catch (...)\n {\n removeme(); // { dg-bogus \"declared with attribute error\" }\ndiff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_dup.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_dup.c\nindex da9370ba52bb..a981a9470e23 100644\n--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_dup.c\n+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_dup.c\n@@ -41,13 +41,13 @@ bfloat16x8_t test_vdupq_lane_bf16 (bfloat16x4_t a)\n {\n return vdupq_lane_bf16 (a, 1);\n }\n-/* { dg-final { scan-assembler-times \"dup\\\\tv\\[0-9\\]+\\.8h, v\\[0-9\\]+.h\\\\\\[0\\\\\\]\" 2 } } */\n+/* { dg-final { scan-assembler-times \"dup\\\\tv\\[0-9\\]+\\.8h, v\\[0-9\\]+.h\\\\\\[0\\\\\\]\" 1 } } */\n \n bfloat16_t test_vget_lane_bf16 (bfloat16x4_t a)\n {\n return vget_lane_bf16 (a, 1);\n }\n-/* { dg-final { scan-assembler-times \"dup\\\\th\\[0-9\\]+, v\\[0-9\\]+\\.h\\\\\\[1\\\\\\]\" 2 } } */\n+/* { dg-final { scan-assembler-times \"dup\\\\th\\[0-9\\]+, v\\[0-9\\]+\\.h\\\\\\[1\\\\\\]\" 1 } } */\n \n bfloat16x4_t test_vdup_lane_bf16 (bfloat16x4_t a)\n {\n@@ -59,7 +59,7 @@ bfloat16x4_t test_vdup_laneq_bf16 (bfloat16x8_t a)\n {\n return vdup_laneq_bf16 (a, 7);\n }\n-/* { dg-final { scan-assembler \"dup\\\\tv\\[0-9\\]+\\.8h, v\\[0-9\\]+\\.h\\\\\\[7\\\\\\]\" } } */\n+/* { dg-final { scan-assembler \"dup\\\\tv\\[0-9\\]+\\.4h, v\\[0-9\\]+\\.h\\\\\\[7\\\\\\]\" } } */\n \n bfloat16x8_t test_vdupq_laneq_bf16 (bfloat16x8_t a)\n {\ndiff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_vect_copy_lane_1.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_vect_copy_lane_1.c\nindex d5aa215c21a3..b9d55d43f5c4 100644\n--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_vect_copy_lane_1.c\n+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_vect_copy_lane_1.c\n@@ -28,5 +28,4 @@ test_vcopyq_laneq_bf16 (bfloat16x8_t a, bfloat16x8_t b)\n return vcopyq_laneq_bf16 (a, 1, b, 2);\n }\n \n-/* { dg-final { scan-assembler-times \"ins\\\\tv0.h\\\\\\[1\\\\\\], v1.h\\\\\\[2\\\\\\]\" 2 } } */\n-/* { dg-final { scan-assembler-times \"ins\\\\tv0.h\\\\\\[1\\\\\\], v1.h\\\\\\[0\\\\\\]\" 2 } } */\n+/* { dg-final { scan-assembler-times \"ins\\\\tv0.h\\\\\\[1\\\\\\], v1.h\\\\\\[2\\\\\\]\" 4 } } */\ndiff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_bf16_indices_1.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_bf16_indices_1.c\ndeleted file mode 100644\nindex 70579800eba0..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_bf16_indices_1.c\n+++ /dev/null\n@@ -1,18 +0,0 @@\n-/* { dg-do compile { target { aarch64*-*-* } } } */\n-/* { dg-skip-if \"\" { *-*-* } { \"-fno-fat-lto-objects\" } } */\n-/* { dg-require-effective-target arm_v8_2a_bf16_neon_ok } */\n-/* { dg-add-options arm_v8_2a_bf16_neon } */\n-\n-#include <arm_neon.h>\n-\n-bfloat16x4_t\n-test_vcopy_lane_bf16 (bfloat16x4_t a, bfloat16x4_t b)\n-{\n- bfloat16x4_t res;\n- res = vcopy_lane_bf16 (a, 0, b, 4);\n- res = vcopy_lane_bf16 (a, 0, b, -1);\n- return res;\n-}\n-\n-/* { dg-error \"lane -1 out of range 0 - 3\" \"\" { target *-*-* } 0 } */\n-/* { dg-error \"lane 4 out of range 0 - 3\" \"\" { target *-*-* } 0 } */\ndiff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_bf16_indices_2.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_bf16_indices_2.c\ndeleted file mode 100644\nindex a8ef9303689d..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_bf16_indices_2.c\n+++ /dev/null\n@@ -1,18 +0,0 @@\n-/* { dg-do compile { target { aarch64*-*-* } } } */\n-/* { dg-skip-if \"\" { *-*-* } { \"-fno-fat-lto-objects\" } } */\n-/* { dg-require-effective-target arm_v8_2a_bf16_neon_ok } */\n-/* { dg-add-options arm_v8_2a_bf16_neon } */\n-\n-#include <arm_neon.h>\n-\n-bfloat16x4_t\n-test_vcopy_lane_bf16 (bfloat16x4_t a, bfloat16x4_t b)\n-{\n- bfloat16x4_t res;\n- res = vcopy_lane_bf16 (a, -1, b, 2);\n- res = vcopy_lane_bf16 (a, 4, b, 2);\n- return res;\n-}\n-\n-/* { dg-error \"lane -1 out of range 0 - 3\" \"\" { target *-*-* } 0 } */\n-/* { dg-error \"lane 4 out of range 0 - 3\" \"\" { target *-*-* } 0 } */\ndiff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_indices.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_indices.c\nnew file mode 100644\nindex 000000000000..a289659aec2c\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_indices.c\n@@ -0,0 +1,68 @@\n+/* { dg-do assemble } */\n+\n+#include <arm_neon.h>\n+\n+#define VEC_LEN(VEC) (sizeof (VEC) / sizeof ((VEC)[0]))\n+\n+#define TEST_VCOPY_LANE(NAME, ARG1_TYPE, ARG2_TYPE) \\\n+ ARG1_TYPE test_##NAME (ARG1_TYPE arg1, ARG2_TYPE arg2) { return NAME (arg1, VEC_LEN (arg1), arg2, VEC_LEN (arg2)); }\n+\n+TEST_VCOPY_LANE (vcopy_lane_u8, uint8x8_t, uint8x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_lane_s8, int8x8_t, int8x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_lane_p8, poly8x8_t, poly8x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_lane_u16, uint16x4_t, uint16x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_lane_s16, int16x4_t, int16x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_lane_p16, poly16x4_t, poly16x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_lane_bf16, bfloat16x4_t, bfloat16x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_lane_u32, uint32x2_t, uint32x2_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_lane_s32, int32x2_t, int32x2_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_lane_f32, float32x2_t, float32x2_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_lane_u64, uint64x1_t, uint64x1_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_lane_s64, int64x1_t, int64x1_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_lane_f64, float64x1_t, float64x1_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_lane_p64, poly64x1_t, poly64x1_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_lane_[a-z0-9]+', [^\\n]+} } */\n+\n+TEST_VCOPY_LANE (vcopy_laneq_u8, uint8x8_t, uint8x16_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_laneq_s8, int8x8_t, int8x16_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_laneq_p8, poly8x8_t, poly8x16_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_laneq_u16, uint16x4_t, uint16x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_laneq_s16, int16x4_t, int16x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_laneq_p16, poly16x4_t, poly16x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_laneq_bf16, bfloat16x4_t, bfloat16x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_laneq_u32, uint32x2_t, uint32x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_laneq_s32, int32x2_t, int32x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_laneq_f32, float32x2_t, float32x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_laneq_u64, uint64x1_t, uint64x2_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_laneq_s64, int64x1_t, int64x2_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_laneq_f64, float64x1_t, float64x2_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopy_laneq_p64, poly64x1_t, poly64x2_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopy_laneq_[a-z0-9]+', [^\\n]+} } */\n+\n+TEST_VCOPY_LANE (vcopyq_lane_u8, uint8x16_t, uint8x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_lane_s8, int8x16_t, int8x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_lane_p8, poly8x16_t, poly8x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_lane_u16, uint16x8_t, uint16x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_lane_s16, int16x8_t, int16x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_lane_p16, poly16x8_t, poly16x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_lane_bf16, bfloat16x8_t, bfloat16x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_lane_u32, uint32x4_t, uint32x2_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_lane_s32, int32x4_t, int32x2_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_lane_f32, float32x4_t, float32x2_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_lane_u64, uint64x2_t, uint64x1_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_lane_s64, int64x2_t, int64x1_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_lane_f64, float64x2_t, float64x1_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_lane_p64, poly64x2_t, poly64x1_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_lane_[a-z0-9]+', [^\\n]+} } */\n+\n+TEST_VCOPY_LANE (vcopyq_laneq_u8, uint8x16_t, uint8x16_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_laneq_s8, int8x16_t, int8x16_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_laneq_p8, poly8x16_t, poly8x16_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_laneq_u16, uint16x8_t, uint16x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_laneq_s16, int16x8_t, int16x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_laneq_p16, poly16x8_t, poly16x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_laneq_bf16, bfloat16x8_t, bfloat16x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_laneq_u32, uint32x4_t, uint32x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_laneq_s32, int32x4_t, int32x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_laneq_f32, float32x4_t, float32x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_laneq_u64, uint64x2_t, uint64x2_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_laneq_s64, int64x2_t, int64x2_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_laneq_f64, float64x2_t, float64x2_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_laneq_[a-z0-9]+', [^\\n]+} } */\n+TEST_VCOPY_LANE (vcopyq_laneq_p64, poly64x2_t, poly64x2_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vcopyq_laneq_[a-z0-9]+', [^\\n]+} } */\ndiff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_laneq_bf16_indices_1.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_laneq_bf16_indices_1.c\ndeleted file mode 100644\nindex c156204bcfcc..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_laneq_bf16_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do compile { target { aarch64*-*-* } } } */\n-/* { dg-skip-if \"\" { *-*-* } { \"-fno-fat-lto-objects\" } } */\n-/* { dg-require-effective-target arm_v8_2a_bf16_neon_ok } */\n-/* { dg-add-options arm_v8_2a_bf16_neon } */\n-\n-#include <arm_neon.h>\n-\n-bfloat16x4_t\n-test_vcopy_laneq_bf16 (bfloat16x4_t a, bfloat16x8_t b)\n-{\n- bfloat16x4_t res;\n- /* { dg-error \"lane -1 out of range 0 - 3\" \"\" { target *-*-* } 0 } */\n- res = vcopy_laneq_bf16 (a, -1, b, 2);\n- /* { dg-error \"lane 4 out of range 0 - 3\" \"\" { target *-*-* } 0 } */\n- res = vcopy_laneq_bf16 (a, 4, b, 2);\n- return res;\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_laneq_bf16_indices_2.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_laneq_bf16_indices_2.c\ndeleted file mode 100644\nindex 036690b0be66..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_laneq_bf16_indices_2.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do compile { target { aarch64*-*-* } } } */\n-/* { dg-skip-if \"\" { *-*-* } { \"-fno-fat-lto-objects\" } } */\n-/* { dg-require-effective-target arm_v8_2a_bf16_neon_ok } */\n-/* { dg-add-options arm_v8_2a_bf16_neon } */\n-\n-#include <arm_neon.h>\n-\n-bfloat16x4_t\n-test_vcopy_laneq_bf16 (bfloat16x4_t a, bfloat16x8_t b)\n-{\n- bfloat16x4_t res;\n- /* { dg-error \"lane -1 out of range 0 - 7\" \"\" { target *-*-* } 0 } */\n- res = vcopy_laneq_bf16 (a, 1, b, -1);\n- /* { dg-error \"lane 8 out of range 0 - 7\" \"\" { target *-*-* } 0 } */\n- res = vcopy_laneq_bf16 (a, 1, b, 8);\n- return res;\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_lane_bf16_indices_1.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_lane_bf16_indices_1.c\ndeleted file mode 100644\nindex 15fce1b20451..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_lane_bf16_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do compile { target { aarch64*-*-* } } } */\n-/* { dg-skip-if \"\" { *-*-* } { \"-fno-fat-lto-objects\" } } */\n-/* { dg-require-effective-target arm_v8_2a_bf16_neon_ok } */\n-/* { dg-add-options arm_v8_2a_bf16_neon } */\n-\n-#include <arm_neon.h>\n-\n-bfloat16x8_t\n-test_vcopyq_lane_bf16 (bfloat16x8_t a, bfloat16x4_t b)\n-{\n- bfloat16x8_t res;\n- /* { dg-error \"lane -1 out of range 0 - 7\" \"\" { target *-*-* } 0 } */\n- res = vcopyq_lane_bf16 (a, -1, b, 2);\n- /* { dg-error \"lane 8 out of range 0 - 7\" \"\" { target *-*-* } 0 } */\n- res = vcopyq_lane_bf16 (a, 8, b, 2);\n- return res;\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_lane_bf16_indices_2.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_lane_bf16_indices_2.c\ndeleted file mode 100644\nindex 6e8004a12872..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_lane_bf16_indices_2.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do compile { target { aarch64*-*-* } } } */\n-/* { dg-skip-if \"\" { *-*-* } { \"-fno-fat-lto-objects\" } } */\n-/* { dg-require-effective-target arm_v8_2a_bf16_neon_ok } */\n-/* { dg-add-options arm_v8_2a_bf16_neon } */\n-\n-#include <arm_neon.h>\n-\n-bfloat16x8_t\n-test_vcopyq_lane_bf16 (bfloat16x8_t a, bfloat16x4_t b)\n-{\n- bfloat16x8_t res;\n- /* { dg-error \"lane -1 out of range 0 - 3\" \"\" { target *-*-* } 0 } */\n- res = vcopyq_lane_bf16 (a, 2, b, -1);\n- /* { dg-error \"lane 4 out of range 0 - 3\" \"\" { target *-*-* } 0 } */\n- res = vcopyq_lane_bf16 (a, 2, b, 4);\n- return res;\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_laneq_bf16_indices_1.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_laneq_bf16_indices_1.c\ndeleted file mode 100644\nindex 2a26b42ad901..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_laneq_bf16_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do compile { target { aarch64*-*-* } } } */\n-/* { dg-skip-if \"\" { *-*-* } { \"-fno-fat-lto-objects\" } } */\n-/* { dg-require-effective-target arm_v8_2a_bf16_neon_ok } */\n-/* { dg-add-options arm_v8_2a_bf16_neon } */\n-\n-#include <arm_neon.h>\n-\n-bfloat16x8_t\n-test_vcopyq_laneq_bf16 (bfloat16x8_t a, bfloat16x8_t b)\n-{\n- bfloat16x8_t res;\n- /* { dg-error \"lane -1 out of range 0 - 7\" \"\" { target *-*-* } 0 } */\n- res = vcopyq_laneq_bf16 (a, -1, b, 2);\n- /* { dg-error \"lane 8 out of range 0 - 7\" \"\" { target *-*-* } 0 } */\n- res = vcopyq_laneq_bf16 (a, 8, b, 2);\n- return res;\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_laneq_bf16_indices_2.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_laneq_bf16_indices_2.c\ndeleted file mode 100644\nindex 421cb2a452e5..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_laneq_bf16_indices_2.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do compile { target { aarch64*-*-* } } } */\n-/* { dg-skip-if \"\" { *-*-* } { \"-fno-fat-lto-objects\" } } */\n-/* { dg-require-effective-target arm_v8_2a_bf16_neon_ok } */\n-/* { dg-add-options arm_v8_2a_bf16_neon } */\n-\n-#include <arm_neon.h>\n-\n-bfloat16x8_t\n-test_vcopyq_laneq_bf16 (bfloat16x8_t a, bfloat16x8_t b)\n-{\n- bfloat16x8_t res;\n- /* { dg-error \"lane -1 out of range 0 - 7\" \"\" { target *-*-* } 0 } */\n- res = vcopyq_laneq_bf16 (a, 2, b, -1);\n- /* { dg-error \"lane 8 out of range 0 - 7\" \"\" { target *-*-* } 0 } */\n- res = vcopyq_laneq_bf16 (a, 2, b, 8);\n- return res;\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/lane-bound-3.c b/gcc/testsuite/gcc.target/aarch64/lane-bound-3.c\nindex 9e0dad372cb9..2d83b34a58a1 100644\n--- a/gcc/testsuite/gcc.target/aarch64/lane-bound-3.c\n+++ b/gcc/testsuite/gcc.target/aarch64/lane-bound-3.c\n@@ -12,9 +12,7 @@\n __attribute__((always_inline))\n static inline\n void h(uint64x2_t c, int __b) {\n- /* Use vgetq_lane_u64 to get a \n- __builtin_aarch64_im_lane_boundsi */\n- vgetq_lane_u64(c, __b);\n+ __builtin_aarch64_im_lane_boundsi (sizeof (c), sizeof (c[0]), __b);\n \n __builtin_unreachable();\n }\ndiff --git a/gcc/testsuite/gcc.target/aarch64/neon/arm_neon_test.h b/gcc/testsuite/gcc.target/aarch64/neon/arm_neon_test.h\nindex 7d9371e01047..844eef49d372 100644\n--- a/gcc/testsuite/gcc.target/aarch64/neon/arm_neon_test.h\n+++ b/gcc/testsuite/gcc.target/aarch64/neon/arm_neon_test.h\n@@ -2,6 +2,8 @@\n \n #pragma GCC target \"+simd+fp16+bf16+sha3\"\n \n+#define VEC_LEN(VEC) (sizeof (VEC) / sizeof (VEC[0]))\n+\n #define TEST_UNARY(NAME, RET_TYPE, ARG_1_TYPE) \\\n RET_TYPE test_##NAME (ARG_1_TYPE a) { return NAME (a); }\n \ndiff --git a/gcc/testsuite/gcc.target/aarch64/neon/vcombine.c b/gcc/testsuite/gcc.target/aarch64/neon/vcombine.c\nnew file mode 100644\nindex 000000000000..c6e451be213d\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/neon/vcombine.c\n@@ -0,0 +1,120 @@\n+/* { dg-do compile } */\n+/* { dg-final { check-function-bodies \"**\" \"\" } } */\n+\n+#include \"arm_neon_test.h\"\n+\n+#define TEST_COMBINE(NAME, RET_TYPE, ARG_TYPE) \\\n+ RET_TYPE test_##NAME (ARG_TYPE arg1, ARG_TYPE arg2) { return NAME (arg1, arg2); }\n+\n+/*\n+** test_vcombine_u8:\n+** uzp1\tv0\\.2d, v0\\.2d, v1\\.2d\n+** ret\n+*/\n+TEST_COMBINE (vcombine_u8, uint8x16_t,uint8x8_t)\n+\n+/*\n+** test_vcombine_s8:\n+** uzp1\tv0\\.2d, v0\\.2d, v1\\.2d\n+** ret\n+*/\n+TEST_COMBINE (vcombine_s8,int8x16_t, int8x8_t)\n+\n+/*\n+** test_vcombine_p8:\n+** uzp1\tv0\\.2d, v0\\.2d, v1\\.2d\n+** ret\n+*/\n+TEST_COMBINE (vcombine_p8, poly8x16_t, poly8x8_t)\n+\n+\n+/*\n+** test_vcombine_mf8:\n+** uzp1\tv0\\.2d, v0\\.2d, v1\\.2d\n+** ret\n+*/\n+TEST_COMBINE (vcombine_mf8, mfloat8x16_t, mfloat8x8_t)\n+\n+/*\n+** test_vcombine_u16:\n+** uzp1\tv0\\.2d, v0\\.2d, v1\\.2d\n+** ret\n+*/\n+TEST_COMBINE (vcombine_u16, uint16x8_t, uint16x4_t)\n+\n+/*\n+** test_vcombine_s16:\n+** uzp1\tv0\\.2d, v0\\.2d, v1\\.2d\n+** ret\n+*/\n+TEST_COMBINE (vcombine_s16, int16x8_t, int16x4_t)\n+\n+/*\n+** test_vcombine_p16:\n+** uzp1\tv0\\.2d, v0\\.2d, v1\\.2d\n+** ret\n+*/\n+TEST_COMBINE (vcombine_p16, poly16x8_t, poly16x4_t)\n+\n+/*\n+** test_vcombine_f16:\n+** uzp1\tv0\\.2d, v0\\.2d, v1\\.2d\n+** ret\n+*/\n+TEST_COMBINE (vcombine_f16, float16x8_t, float16x4_t)\n+\n+/*\n+** test_vcombine_bf16:\n+** uzp1\tv0\\.2d, v0\\.2d, v1\\.2d\n+** ret\n+*/\n+TEST_COMBINE (vcombine_bf16, bfloat16x8_t, bfloat16x4_t)\n+\n+/*\n+** test_vcombine_u32:\n+** uzp1\tv0\\.2d, v0\\.2d, v1\\.2d\n+** ret\n+*/\n+TEST_COMBINE (vcombine_u32, uint32x4_t, uint32x2_t)\n+\n+/*\n+** test_vcombine_s32:\n+** uzp1\tv0\\.2d, v0\\.2d, v1\\.2d\n+** ret\n+*/\n+TEST_COMBINE (vcombine_s32, int32x4_t, int32x2_t)\n+\n+/*\n+** test_vcombine_f32:\n+** uzp1\tv0\\.2d, v0\\.2d, v1\\.2d\n+** ret\n+*/\n+TEST_COMBINE (vcombine_f32, float32x4_t, float32x2_t)\n+\n+/*\n+** test_vcombine_u64:\n+** ins\tv0\\.d\\[1], v1\\.d\\[0\\]\n+** ret\n+*/\n+TEST_COMBINE (vcombine_u64, uint64x2_t, uint64x1_t)\n+\n+/*\n+** test_vcombine_s64:\n+** ins\tv0\\.d\\[1], v1\\.d\\[0\\]\n+** ret\n+*/\n+TEST_COMBINE (vcombine_s64, int64x2_t, int64x1_t)\n+\n+/*\n+** test_vcombine_p64:\n+** ins\tv0\\.d\\[1], v1\\.d\\[0\\]\n+** ret\n+*/\n+TEST_COMBINE (vcombine_p64, poly64x2_t, poly64x1_t)\n+\n+/*\n+** test_vcombine_f64:\n+** ins\tv0\\.d\\[1], v1\\.d\\[0\\]\n+** ret\n+*/\n+TEST_COMBINE (vcombine_f64, float64x2_t, float64x1_t)\ndiff --git a/gcc/testsuite/gcc.target/aarch64/neon/vcopy_lane.c b/gcc/testsuite/gcc.target/aarch64/neon/vcopy_lane.c\nnew file mode 100644\nindex 000000000000..0c87f44c2bce\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/neon/vcopy_lane.c\n@@ -0,0 +1,428 @@\n+/* { dg-do compile } */\n+/* { dg-final { check-function-bodies \"**\" \"\" } } */\n+\n+#include \"arm_neon_test.h\"\n+\n+#define TEST_COPY_LANE(NAME, TYPE1, TYPE2) \\\n+ TYPE1 test_##NAME (TYPE1 dst, TYPE2 src) \\\n+ { \\\n+ return NAME (dst, VEC_LEN (dst) - 1, src, VEC_LEN (src) - 1); \\\n+ }\n+\n+/*\n+** test_vcopy_lane_p8:\n+** ins\tv0\\.b\\[7\\], v1\\.b\\[7\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_lane_p8, poly8x8_t, poly8x8_t)\n+\n+/*\n+** test_vcopy_lane_mf8:\n+** ins\tv0\\.b\\[7\\], v1\\.b\\[7\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_lane_mf8, mfloat8x8_t, mfloat8x8_t)\n+\n+/*\n+** test_vcopy_lane_s8:\n+** ins\tv0\\.b\\[7\\], v1\\.b\\[7\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_lane_s8, int8x8_t, int8x8_t)\n+\n+/*\n+** test_vcopy_lane_u8:\n+** ins\tv0\\.b\\[7\\], v1\\.b\\[7\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_lane_u8, uint8x8_t, uint8x8_t)\n+\n+/*\n+** test_vcopy_laneq_p8:\n+** ins\tv0\\.b\\[7\\], v1\\.b\\[15\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_laneq_p8, poly8x8_t, poly8x16_t)\n+\n+/*\n+** test_vcopy_laneq_mf8:\n+** ins\tv0\\.b\\[7\\], v1\\.b\\[15\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_laneq_mf8, mfloat8x8_t, mfloat8x16_t)\n+\n+/*\n+** test_vcopy_laneq_s8:\n+** ins\tv0\\.b\\[7\\], v1\\.b\\[15\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_laneq_s8, int8x8_t, int8x16_t)\n+\n+/*\n+** test_vcopy_laneq_u8:\n+** ins\tv0\\.b\\[7\\], v1\\.b\\[15\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_laneq_u8, uint8x8_t, uint8x16_t)\n+\n+/*\n+** test_vcopyq_lane_p8:\n+** ins\tv0\\.b\\[15\\], v1\\.b\\[7\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_lane_p8, poly8x16_t, poly8x8_t)\n+\n+/*\n+** test_vcopyq_lane_mf8:\n+** ins\tv0\\.b\\[15\\], v1\\.b\\[7\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_lane_mf8, mfloat8x16_t, mfloat8x8_t)\n+\n+/*\n+** test_vcopyq_lane_s8:\n+** ins\tv0\\.b\\[15\\], v1\\.b\\[7\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_lane_s8, int8x16_t, int8x8_t)\n+\n+/*\n+** test_vcopyq_lane_u8:\n+** ins\tv0\\.b\\[15\\], v1\\.b\\[7\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_lane_u8, uint8x16_t, uint8x8_t)\n+\n+/*\n+** test_vcopyq_laneq_p8:\n+** ins\tv0\\.b\\[15\\], v1\\.b\\[15\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_laneq_p8, poly8x16_t, poly8x16_t)\n+\n+/*\n+** test_vcopyq_laneq_mf8:\n+** ins\tv0\\.b\\[15\\], v1\\.b\\[15\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_laneq_mf8, mfloat8x16_t, mfloat8x16_t)\n+\n+/*\n+** test_vcopyq_laneq_s8:\n+** ins\tv0\\.b\\[15\\], v1\\.b\\[15\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_laneq_s8, int8x16_t, int8x16_t)\n+\n+/*\n+** test_vcopyq_laneq_u8:\n+** ins\tv0\\.b\\[15\\], v1\\.b\\[15\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_laneq_u8, uint8x16_t, uint8x16_t)\n+\n+/*\n+** test_vcopy_lane_bf16:\n+** ins\tv0\\.h\\[3\\], v1\\.h\\[3\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_lane_bf16, bfloat16x4_t, bfloat16x4_t)\n+\n+/*\n+** test_vcopy_lane_p16:\n+** ins\tv0\\.h\\[3\\], v1\\.h\\[3\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_lane_p16, poly16x4_t, poly16x4_t)\n+\n+/*\n+** test_vcopy_lane_s16:\n+** ins\tv0\\.h\\[3\\], v1\\.h\\[3\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_lane_s16, int16x4_t, int16x4_t)\n+\n+/*\n+** test_vcopy_lane_u16:\n+** ins\tv0\\.h\\[3\\], v1\\.h\\[3\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_lane_u16, uint16x4_t, uint16x4_t)\n+\n+/*\n+** test_vcopy_laneq_bf16:\n+** ins\tv0\\.h\\[3\\], v1\\.h\\[7\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_laneq_bf16, bfloat16x4_t, bfloat16x8_t)\n+\n+/*\n+** test_vcopy_laneq_p16:\n+** ins\tv0\\.h\\[3\\], v1\\.h\\[7\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_laneq_p16, poly16x4_t, poly16x8_t)\n+/*\n+** test_vcopy_laneq_s16:\n+** ins\tv0\\.h\\[3\\], v1\\.h\\[7\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_laneq_s16, int16x4_t, int16x8_t)\n+\n+/*\n+** test_vcopy_laneq_u16:\n+** ins\tv0\\.h\\[3\\], v1\\.h\\[7\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_laneq_u16, uint16x4_t, uint16x8_t)\n+\n+/*\n+** test_vcopyq_lane_bf16:\n+** ins\tv0\\.h\\[7\\], v1\\.h\\[3\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_lane_bf16, bfloat16x8_t, bfloat16x4_t)\n+\n+/*\n+** test_vcopyq_lane_p16:\n+** ins\tv0\\.h\\[7\\], v1\\.h\\[3\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_lane_p16, poly16x8_t, poly16x4_t)\n+\n+/*\n+** test_vcopyq_lane_s16:\n+** ins\tv0\\.h\\[7\\], v1\\.h\\[3\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_lane_s16, int16x8_t, int16x4_t)\n+\n+/*\n+** test_vcopyq_lane_u16:\n+** ins\tv0\\.h\\[7\\], v1\\.h\\[3\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_lane_u16, uint16x8_t, uint16x4_t)\n+\n+/*\n+** test_vcopyq_laneq_bf16:\n+** ins\tv0\\.h\\[7\\], v1\\.h\\[7\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_laneq_bf16, bfloat16x8_t, bfloat16x8_t)\n+\n+/*\n+** test_vcopyq_laneq_p16:\n+** ins\tv0\\.h\\[7\\], v1\\.h\\[7\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_laneq_p16, poly16x8_t, poly16x8_t)\n+\n+/*\n+** test_vcopyq_laneq_s16:\n+** ins\tv0\\.h\\[7\\], v1\\.h\\[7\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_laneq_s16, int16x8_t, int16x8_t)\n+\n+/*\n+** test_vcopyq_laneq_u16:\n+** ins\tv0\\.h\\[7\\], v1\\.h\\[7\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_laneq_u16, uint16x8_t, uint16x8_t)\n+\n+/*\n+** test_vcopy_lane_f32:\n+** ins\tv0\\.s\\[1\\], v1\\.s\\[1\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_lane_f32, float32x2_t, float32x2_t)\n+\n+/*\n+** test_vcopy_lane_s32:\n+** ins\tv0\\.s\\[1\\], v1\\.s\\[1\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_lane_s32, int32x2_t, int32x2_t)\n+\n+/*\n+** test_vcopy_lane_u32:\n+** ins\tv0\\.s\\[1\\], v1\\.s\\[1\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_lane_u32, uint32x2_t, uint32x2_t)\n+\n+/*\n+** test_vcopy_laneq_f32:\n+** ins\tv0\\.s\\[1\\], v1\\.s\\[3\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_laneq_f32, float32x2_t, float32x4_t)\n+\n+/*\n+** test_vcopy_laneq_s32:\n+** ins\tv0\\.s\\[1\\], v1\\.s\\[3\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_laneq_s32, int32x2_t, int32x4_t)\n+\n+/*\n+** test_vcopy_laneq_u32:\n+** ins\tv0\\.s\\[1\\], v1\\.s\\[3\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_laneq_u32, uint32x2_t, uint32x4_t)\n+\n+/*\n+** test_vcopyq_lane_f32:\n+** ins\tv0\\.s\\[3\\], v1\\.s\\[1\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_lane_f32, float32x4_t, float32x2_t)\n+\n+/*\n+** test_vcopyq_lane_s32:\n+** ins\tv0\\.s\\[3\\], v1\\.s\\[1\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_lane_s32, int32x4_t, int32x2_t)\n+\n+/*\n+** test_vcopyq_lane_u32:\n+** ins\tv0\\.s\\[3\\], v1\\.s\\[1\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_lane_u32, uint32x4_t, uint32x2_t)\n+\n+/*\n+** test_vcopyq_laneq_f32:\n+** ins\tv0\\.s\\[3\\], v1\\.s\\[3\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_laneq_f32, float32x4_t, float32x4_t)\n+\n+/*\n+** test_vcopyq_laneq_s32:\n+** ins\tv0\\.s\\[3\\], v1\\.s\\[3\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_laneq_s32, int32x4_t, int32x4_t)\n+\n+/*\n+** test_vcopyq_laneq_u32:\n+** ins\tv0\\.s\\[3\\], v1\\.s\\[3\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_laneq_u32, uint32x4_t, uint32x4_t)\n+\n+/*\n+** test_vcopy_lane_f64:\n+** fmov\td0, d1\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_lane_f64, float64x1_t, float64x1_t)\n+\n+/*\n+** test_vcopy_lane_p64:\n+** fmov\td0, d1\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_lane_p64, poly64x1_t, poly64x1_t)\n+\n+/*\n+** test_vcopy_lane_s64:\n+** fmov\td0, d1\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_lane_s64, int64x1_t, int64x1_t)\n+\n+/*\n+** test_vcopy_lane_u64:\n+** fmov\td0, d1\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_lane_u64, uint64x1_t, uint64x1_t)\n+\n+/*\n+** test_vcopy_laneq_f64:\n+** dup\td0, v1\\.d\\[1\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_laneq_f64, float64x1_t, float64x2_t)\n+\n+/*\n+** test_vcopy_laneq_p64:\n+** dup\td0, v1\\.d\\[1\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_laneq_p64, poly64x1_t, poly64x2_t)\n+/*\n+** test_vcopy_laneq_s64:\n+** dup\td0, v1\\.d\\[1\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_laneq_s64, int64x1_t, int64x2_t)\n+\n+/*\n+** test_vcopy_laneq_u64:\n+** dup\td0, v1\\.d\\[1\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopy_laneq_u64, uint64x1_t, uint64x2_t)\n+\n+/*\n+** test_vcopyq_lane_f64:\n+** ins\tv0\\.d\\[1\\], v1\\.d\\[0\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_lane_f64, float64x2_t, float64x1_t)\n+\n+/*\n+** test_vcopyq_lane_u64:\n+** ins\tv0\\.d\\[1\\], v1\\.d\\[0\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_lane_p64, poly64x2_t, poly64x1_t)\n+\n+/*\n+** test_vcopyq_lane_u64:\n+** ins\tv0\\.d\\[1\\], v1\\.d\\[0\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_lane_s64, int64x2_t, int64x1_t)\n+\n+/*\n+** test_vcopyq_lane_u64:\n+** ins\tv0\\.d\\[1\\], v1\\.d\\[0\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_lane_u64, uint64x2_t, uint64x1_t)\n+\n+/*\n+** test_vcopyq_laneq_f64:\n+** ins\tv0\\.d\\[1\\], v1\\.d\\[1\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_laneq_f64, float64x2_t, float64x2_t)\n+\n+/*\n+** test_vcopyq_laneq_p64:\n+** ins\tv0\\.d\\[1\\], v1\\.d\\[1\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_laneq_p64, poly64x2_t, poly64x2_t)\n+\n+/*\n+** test_vcopyq_laneq_s64:\n+** ins\tv0\\.d\\[1\\], v1\\.d\\[1\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_laneq_s64, int64x2_t, int64x2_t)\n+\n+/*\n+** test_vcopyq_laneq_u64:\n+** ins\tv0\\.d\\[1\\], v1\\.d\\[1\\]\n+** ret\n+*/\n+TEST_COPY_LANE (vcopyq_laneq_u64, uint64x2_t, uint64x2_t)\ndiff --git a/gcc/testsuite/gcc.target/aarch64/neon/vcreate.c b/gcc/testsuite/gcc.target/aarch64/neon/vcreate.c\nnew file mode 100644\nindex 000000000000..f553ea703934\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/neon/vcreate.c\n@@ -0,0 +1,119 @@\n+/* { dg-do compile } */\n+/* { dg-final { check-function-bodies \"**\" \"\" } } */\n+\n+#include \"arm_neon_test.h\"\n+\n+#define TEST_CREATE(NAME, RET_TYPE) \\\n+ RET_TYPE test_##NAME (uint64_t arg1) { return NAME (arg1); }\n+\n+/*\n+** test_vcreate_u8:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_CREATE (vcreate_u8, uint8x8_t)\n+\n+/*\n+** test_vcreate_s8:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_CREATE (vcreate_s8, int8x8_t)\n+\n+/*\n+** test_vcreate_p8:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_CREATE (vcreate_p8, poly8x8_t)\n+\n+/*\n+** test_vcreate_mf8:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_CREATE (vcreate_mf8, mfloat8x8_t)\n+\n+/*\n+** test_vcreate_u16:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_CREATE (vcreate_u16, uint16x4_t)\n+\n+/*\n+** test_vcreate_s16:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_CREATE (vcreate_s16, int16x4_t)\n+\n+/*\n+** test_vcreate_p16:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_CREATE (vcreate_p16, poly16x4_t)\n+\n+/*\n+** test_vcreate_f16:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_CREATE (vcreate_f16, float16x4_t)\n+\n+/*\n+** test_vcreate_bf16:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_CREATE (vcreate_bf16, bfloat16x4_t)\n+\n+/*\n+** test_vcreate_u32:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_CREATE (vcreate_u32, uint32x2_t)\n+\n+/*\n+** test_vcreate_s32:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_CREATE (vcreate_s32, int32x2_t)\n+\n+/*\n+** test_vcreate_f32:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_CREATE (vcreate_f32, float32x2_t)\n+\n+/*\n+** test_vcreate_u64:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_CREATE (vcreate_u64, uint64x1_t)\n+\n+/*\n+** test_vcreate_s64:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_CREATE (vcreate_s64, int64x1_t)\n+\n+/*\n+** test_vcreate_p64:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_CREATE (vcreate_p64, poly64x1_t)\n+\n+/*\n+** test_vcreate_f64:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_CREATE (vcreate_f64, float64x1_t)\ndiff --git a/gcc/testsuite/gcc.target/aarch64/neon/vdup.c b/gcc/testsuite/gcc.target/aarch64/neon/vdup.c\nnew file mode 100644\nindex 000000000000..c1b2c166e624\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/neon/vdup.c\n@@ -0,0 +1,226 @@\n+/* { dg-do compile } */\n+/* { dg-final { check-function-bodies \"**\" \"\" } } */\n+\n+#include \"arm_neon_test.h\"\n+\n+/*\n+** test_vdup_n_p8:\n+** dup\tv0\\.8b, w0\n+** ret\n+*/\n+TEST_UNARY (vdup_n_p8, poly8x8_t, poly8_t)\n+\n+/*\n+** test_vdup_n_mf8:\n+** dup\tv0\\.8b, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_UNARY (vdup_n_mf8, mfloat8x8_t, mfloat8_t)\n+\n+/*\n+** test_vdup_n_u8:\n+** dup\tv0\\.8b, w0\n+** ret\n+*/\n+TEST_UNARY (vdup_n_u8, uint8x8_t, uint8_t)\n+\n+/*\n+** test_vdup_n_s8:\n+** dup\tv0\\.8b, w0\n+** ret\n+*/\n+TEST_UNARY (vdup_n_s8, int8x8_t, int8_t)\n+\n+/*\n+** test_vdupq_n_p8:\n+** dup\tv0\\.16b, w0\n+** ret\n+*/\n+TEST_UNARY (vdupq_n_p8, poly8x16_t, poly8_t)\n+\n+/*\n+** test_vdupq_n_mf8:\n+** dup\tv0\\.16b, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_UNARY (vdupq_n_mf8, mfloat8x16_t, mfloat8_t)\n+\n+/*\n+** test_vdupq_n_u8:\n+** dup\tv0\\.16b, w0\n+** ret\n+*/\n+TEST_UNARY (vdupq_n_u8, uint8x16_t, uint8_t)\n+\n+/*\n+** test_vdupq_n_s8:\n+** dup\tv0\\.16b, w0\n+** ret\n+*/\n+TEST_UNARY (vdupq_n_s8, int8x16_t, int8_t)\n+\n+/*\n+** test_vdup_n_p16:\n+** dup\tv0\\.4h, w0\n+** ret\n+*/\n+TEST_UNARY (vdup_n_p16, poly16x4_t, poly16_t)\n+\n+/*\n+** test_vdup_n_f16:\n+** dup\tv0\\.4h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_UNARY (vdup_n_f16, float16x4_t, float16_t)\n+\n+/*\n+** test_vdup_n_bf16:\n+** dup\tv0\\.4h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_UNARY (vdup_n_bf16, bfloat16x4_t, bfloat16_t)\n+\n+/*\n+** test_vdup_n_u16:\n+** dup\tv0\\.4h, w0\n+** ret\n+*/\n+TEST_UNARY (vdup_n_u16, uint16x4_t, uint16_t)\n+\n+/*\n+** test_vdup_n_s16:\n+** dup\tv0\\.4h, w0\n+** ret\n+*/\n+TEST_UNARY (vdup_n_s16, int16x4_t, int16_t)\n+\n+/*\n+** test_vdupq_n_p16:\n+** dup\tv0\\.8h, w0\n+** ret\n+*/\n+TEST_UNARY (vdupq_n_p16, poly16x8_t, poly16_t)\n+\n+/*\n+** test_vdupq_n_f16:\n+** dup\tv0\\.8h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_UNARY (vdupq_n_f16, float16x8_t, float16_t)\n+\n+/*\n+** test_vdupq_n_bf16:\n+** dup\tv0\\.8h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_UNARY (vdupq_n_bf16, bfloat16x8_t, bfloat16_t)\n+\n+/*\n+** test_vdupq_n_u16:\n+** dup\tv0\\.8h, w0\n+** ret\n+*/\n+TEST_UNARY (vdupq_n_u16, uint16x8_t, uint16_t)\n+\n+/*\n+** test_vdupq_n_s16:\n+** dup\tv0\\.8h, w0\n+** ret\n+*/\n+TEST_UNARY (vdupq_n_s16, int16x8_t, int16_t)\n+\n+/*\n+** test_vdup_n_f32:\n+** dup\tv0\\.2s, v0\\.s\\[0\\]\n+** ret\n+*/\n+TEST_UNARY (vdup_n_f32, float32x2_t, float32_t)\n+\n+/*\n+** test_vdup_n_u32:\n+** dup\tv0\\.2s, w0\n+** ret\n+*/\n+TEST_UNARY (vdup_n_u32, uint32x2_t, uint32_t)\n+\n+/*\n+** test_vdup_n_s32:\n+** dup\tv0\\.2s, w0\n+** ret\n+*/\n+TEST_UNARY (vdup_n_s32, int32x2_t, int32_t)\n+\n+/*\n+** test_vdupq_n_f32:\n+** dup\tv0\\.4s, v0\\.s\\[0\\]\n+** ret\n+*/\n+TEST_UNARY (vdupq_n_f32, float32x4_t, float32_t)\n+\n+/*\n+** test_vdupq_n_u32:\n+** dup\tv0\\.4s, w0\n+** ret\n+*/\n+TEST_UNARY (vdupq_n_u32, uint32x4_t, uint32_t)\n+\n+/*\n+** test_vdupq_n_s32:\n+** dup\tv0\\.4s, w0\n+** ret\n+*/\n+TEST_UNARY (vdupq_n_s32, int32x4_t, int32_t)\n+\n+/*\n+** test_vdup_n_p64:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_UNARY (vdup_n_p64, poly64x1_t, poly64_t)\n+\n+/*\n+** test_vdup_n_f64:\n+** ret\n+*/\n+TEST_UNARY (vdup_n_f64, float64x1_t, float64_t)\n+\n+/*\n+** test_vdup_n_u64:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_UNARY (vdup_n_u64, uint64x1_t, uint64_t)\n+/*\n+** test_vdup_n_s64:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_UNARY (vdup_n_s64, int64x1_t, int64_t)\n+\n+/*\n+** test_vdupq_n_p64:\n+** dup\tv0\\.2d, x0\n+** ret\n+*/\n+TEST_UNARY (vdupq_n_p64, poly64x2_t, poly64_t)\n+\n+/*\n+** test_vdupq_n_f64:\n+** dup\tv0\\.2d, v0\\.d\\[0\\]\n+** ret\n+*/\n+TEST_UNARY (vdupq_n_f64, float64x2_t, float64_t)\n+\n+/*\n+** test_vdupq_n_u64:\n+** dup\tv0\\.2d, x0\n+** ret\n+*/\n+TEST_UNARY (vdupq_n_u64, uint64x2_t, uint64_t)\n+\n+/*\n+** test_vdupq_n_s64:\n+** dup\tv0\\.2d, x0\n+** ret\n+*/\n+TEST_UNARY (vdupq_n_s64, int64x2_t, int64_t)\ndiff --git a/gcc/testsuite/gcc.target/aarch64/neon/vdup_lane.c b/gcc/testsuite/gcc.target/aarch64/neon/vdup_lane.c\nnew file mode 100644\nindex 000000000000..e2e8a53c95d1\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/neon/vdup_lane.c\n@@ -0,0 +1,647 @@\n+/* { dg-do compile } */\n+/* { dg-final { check-function-bodies \"**\" \"\" } } */\n+\n+#include \"arm_neon_test.h\"\n+\n+#define TEST_DUP_LANE(NAME, TYPE1, TYPE2) \\\n+ TYPE1 test_##NAME (TYPE2 vec2) { return NAME (vec2, 0); }\n+\n+/*\n+** test_vdup_lane_p8:\n+** dup\tv0\\.8b, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_lane_p8, poly8x8_t, poly8x8_t)\n+\n+/*\n+** test_vdup_lane_mf8:\n+** dup\tv0\\.8b, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_lane_mf8, mfloat8x8_t, mfloat8x8_t)\n+\n+/*\n+** test_vdup_lane_u8:\n+** dup\tv0\\.8b, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_lane_u8, uint8x8_t, uint8x8_t)\n+\n+/*\n+** test_vdup_lane_s8:\n+** dup\tv0\\.8b, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_lane_s8, int8x8_t, int8x8_t)\n+\n+/*\n+** test_vdup_laneq_p8:\n+** dup\tv0\\.8b, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_laneq_p8, poly8x8_t, poly8x16_t)\n+\n+/*\n+** test_vdup_laneq_mf8:\n+** dup\tv0\\.8b, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_laneq_mf8, mfloat8x8_t, mfloat8x16_t)\n+\n+/*\n+** test_vdup_laneq_u8:\n+** dup\tv0\\.8b, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_laneq_u8, uint8x8_t, uint8x16_t)\n+\n+/*\n+** test_vdup_laneq_s8:\n+** dup\tv0\\.8b, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_laneq_s8, int8x8_t, int8x16_t)\n+\n+/*\n+** test_vdupq_lane_p8:\n+** dup\tv0\\.16b, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_lane_p8, poly8x16_t, poly8x8_t)\n+\n+/*\n+** test_vdupq_lane_mf8:\n+** dup\tv0\\.16b, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_lane_mf8, mfloat8x16_t, mfloat8x8_t)\n+\n+/*\n+** test_vdupq_lane_u8:\n+** dup\tv0\\.16b, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_lane_u8, uint8x16_t, uint8x8_t)\n+\n+/*\n+** test_vdupq_lane_s8:\n+** dup\tv0\\.16b, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_lane_s8, int8x16_t, int8x8_t)\n+\n+/*\n+** test_vdupq_laneq_p8:\n+** dup\tv0\\.16b, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_laneq_p8, poly8x16_t, poly8x16_t)\n+\n+/*\n+** test_vdupq_laneq_mf8:\n+** dup\tv0\\.16b, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_laneq_mf8, mfloat8x16_t, mfloat8x16_t)\n+\n+/*\n+** test_vdupq_laneq_u8:\n+** dup\tv0\\.16b, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_laneq_u8, uint8x16_t, uint8x16_t)\n+\n+/*\n+** test_vdupq_laneq_s8:\n+** dup\tv0\\.16b, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_laneq_s8, int8x16_t, int8x16_t)\n+\n+/*\n+** test_vdup_lane_p16:\n+** dup\tv0\\.4h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_lane_p16, poly16x4_t, poly16x4_t)\n+\n+/*\n+** test_vdup_lane_u16:\n+** dup\tv0\\.4h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_lane_u16, uint16x4_t, uint16x4_t)\n+\n+/*\n+** test_vdup_lane_s16:\n+** dup\tv0\\.4h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_lane_s16, int16x4_t, int16x4_t)\n+\n+/*\n+** test_vdup_lane_f16:\n+** dup\tv0\\.4h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_lane_f16, float16x4_t, float16x4_t)\n+\n+/*\n+** test_vdup_lane_bf16:\n+** dup\tv0\\.4h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_lane_bf16, bfloat16x4_t, bfloat16x4_t)\n+\n+/*\n+** test_vdup_laneq_p16:\n+** dup\tv0\\.4h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_laneq_p16, poly16x4_t, poly16x8_t)\n+\n+/*\n+** test_vdup_laneq_u16:\n+** dup\tv0\\.4h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_laneq_u16, uint16x4_t, uint16x8_t)\n+\n+/*\n+** test_vdup_laneq_s16:\n+** dup\tv0\\.4h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_laneq_s16, int16x4_t, int16x8_t)\n+\n+/*\n+** test_vdup_laneq_f16:\n+** dup\tv0\\.4h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_laneq_f16, float16x4_t, float16x8_t)\n+\n+/*\n+** test_vdup_laneq_bf16:\n+** dup\tv0\\.4h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_laneq_bf16, bfloat16x4_t, bfloat16x8_t)\n+\n+/*\n+** test_vdupq_lane_p16:\n+** dup\tv0\\.8h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_lane_p16, poly16x8_t, poly16x4_t)\n+\n+/*\n+** test_vdupq_lane_u16:\n+** dup\tv0\\.8h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_lane_u16, uint16x8_t, uint16x4_t)\n+\n+/*\n+** test_vdupq_lane_s16:\n+** dup\tv0\\.8h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_lane_s16, int16x8_t, int16x4_t)\n+\n+/*\n+** test_vdupq_lane_f16:\n+** dup\tv0\\.8h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_lane_f16, float16x8_t, float16x4_t)\n+\n+/*\n+** test_vdupq_lane_bf16:\n+** dup\tv0\\.8h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_lane_bf16, bfloat16x8_t, bfloat16x4_t)\n+\n+/*\n+** test_vdupq_laneq_p16:\n+** dup\tv0\\.8h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_laneq_p16, poly16x8_t, poly16x8_t)\n+\n+/*\n+** test_vdupq_laneq_u16:\n+** dup\tv0\\.8h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_laneq_u16, uint16x8_t, uint16x8_t)\n+\n+/*\n+** test_vdupq_laneq_s16:\n+** dup\tv0\\.8h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_laneq_s16, int16x8_t, int16x8_t)\n+\n+/*\n+** test_vdupq_laneq_f16:\n+** dup\tv0\\.8h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_laneq_f16, float16x8_t, float16x8_t)\n+\n+/*\n+** test_vdupq_laneq_bf16:\n+** dup\tv0\\.8h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_laneq_bf16, bfloat16x8_t, bfloat16x8_t)\n+\n+/*\n+** test_vdup_lane_u32:\n+** dup\tv0\\.2s, v0\\.s\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_lane_u32, uint32x2_t, uint32x2_t)\n+\n+/*\n+** test_vdup_lane_s32:\n+** dup\tv0\\.2s, v0\\.s\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_lane_s32, int32x2_t, int32x2_t)\n+\n+/*\n+** test_vdup_lane_f32:\n+** dup\tv0\\.2s, v0\\.s\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_lane_f32, float32x2_t, float32x2_t)\n+\n+/*\n+** test_vdup_laneq_u32:\n+** dup\tv0\\.2s, v0\\.s\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_laneq_u32, uint32x2_t, uint32x4_t)\n+\n+/*\n+** test_vdup_laneq_s32:\n+** dup\tv0\\.2s, v0\\.s\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_laneq_s32, int32x2_t, int32x4_t)\n+\n+/*\n+** test_vdup_laneq_f32:\n+** dup\tv0\\.2s, v0\\.s\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_laneq_f32, float32x2_t, float32x4_t)\n+\n+/*\n+** test_vdupq_lane_u32:\n+** dup\tv0\\.4s, v0\\.s\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_lane_u32, uint32x4_t, uint32x2_t)\n+\n+/*\n+** test_vdupq_lane_s32:\n+** dup\tv0\\.4s, v0\\.s\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_lane_s32, int32x4_t, int32x2_t)\n+\n+/*\n+** test_vdupq_lane_f32:\n+** dup\tv0\\.4s, v0\\.s\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_lane_f32, float32x4_t, float32x2_t)\n+\n+/*\n+** test_vdupq_laneq_u32:\n+** dup\tv0\\.4s, v0\\.s\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_laneq_u32, uint32x4_t, uint32x4_t)\n+\n+/*\n+** test_vdupq_laneq_s32:\n+** dup\tv0\\.4s, v0\\.s\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_laneq_s32, int32x4_t, int32x4_t)\n+\n+/*\n+** test_vdupq_laneq_f32:\n+** dup\tv0\\.4s, v0\\.s\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_laneq_f32, float32x4_t, float32x4_t)\n+\n+/*\n+** test_vdup_lane_p64:\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_lane_p64, poly64x1_t, poly64x1_t)\n+\n+/*\n+** test_vdup_lane_u64:\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_lane_u64, uint64x1_t, uint64x1_t)\n+\n+/*\n+** test_vdup_lane_s64:\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_lane_s64, int64x1_t, int64x1_t)\n+\n+/*\n+** test_vdup_lane_f64:\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_lane_f64, float64x1_t, float64x1_t)\n+\n+/*\n+** test_vdup_laneq_p64:\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_laneq_p64, poly64x1_t, poly64x2_t)\n+\n+/*\n+** test_vdup_laneq_u64:\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_laneq_u64, uint64x1_t, uint64x2_t)\n+\n+/*\n+** test_vdup_laneq_s64:\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_laneq_s64, int64x1_t, int64x2_t)\n+\n+/*\n+** test_vdup_laneq_f64:\n+** ret\n+*/\n+TEST_DUP_LANE (vdup_laneq_f64, float64x1_t, float64x2_t)\n+\n+/*\n+** test_vdupq_lane_p64:\n+** dup\tv0\\.2d, v0\\.d\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_lane_p64, poly64x2_t, poly64x1_t)\n+\n+/*\n+** test_vdupq_lane_u64:\n+** dup\tv0\\.2d, v0\\.d\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_lane_u64, uint64x2_t, uint64x1_t)\n+\n+/*\n+** test_vdupq_lane_s64:\n+** dup\tv0\\.2d, v0\\.d\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_lane_s64, int64x2_t, int64x1_t)\n+\n+/*\n+** test_vdupq_lane_f64:\n+** dup\tv0\\.2d, v0\\.d\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_lane_f64, float64x2_t, float64x1_t)\n+\n+/*\n+** test_vdupq_laneq_p64:\n+** dup\tv0\\.2d, v0\\.d\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_laneq_p64, poly64x2_t, poly64x2_t)\n+\n+/*\n+** test_vdupq_laneq_u64:\n+** dup\tv0\\.2d, v0\\.d\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_laneq_u64, uint64x2_t, uint64x2_t)\n+\n+/*\n+** test_vdupq_laneq_s64:\n+** dup\tv0\\.2d, v0\\.d\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_laneq_s64, int64x2_t, int64x2_t)\n+\n+/*\n+** test_vdupq_laneq_f64:\n+** dup\tv0\\.2d, v0\\.d\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupq_laneq_f64, float64x2_t, float64x2_t)\n+\n+/*\n+** test_vdupb_lane_p8:\n+** umov\tw0, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupb_lane_p8, poly8_t, poly8x8_t)\n+\n+/*\n+** test_vdupb_laneq_p8:\n+** umov\tw0, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupb_laneq_p8, poly8_t, poly8x16_t)\n+\n+/*\n+** test_vdupb_lane_mf8:\n+** ret\n+*/\n+TEST_DUP_LANE (vdupb_lane_mf8, mfloat8_t, mfloat8x8_t)\n+\n+/*\n+** test_vdupb_laneq_mf8:\n+** ret\n+*/\n+TEST_DUP_LANE (vdupb_laneq_mf8, mfloat8_t, mfloat8x16_t)\n+\n+/*\n+** test_vdupb_lane_u8:\n+** umov\tw0, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupb_lane_u8, uint8_t, uint8x8_t)\n+\n+/*\n+** test_vdupb_laneq_u8:\n+** umov\tw0, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupb_laneq_u8, uint8_t, uint8x16_t)\n+\n+/*\n+** test_vdupb_lane_s8:\n+** umov\tw0, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupb_lane_s8, int8_t, int8x8_t)\n+\n+/*\n+** test_vdupb_laneq_s8:\n+** umov\tw0, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vdupb_laneq_s8, int8_t, int8x16_t)\n+\n+/*\n+** test_vduph_lane_u16:\n+** umov\tw0, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vduph_lane_u16, uint16_t, uint16x4_t)\n+\n+/*\n+** test_vduph_laneq_u16:\n+** umov\tw0, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vduph_laneq_u16, uint16_t, uint16x8_t)\n+\n+/*\n+** test_vduph_lane_s16:\n+** umov\tw0, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vduph_lane_s16, int16_t, int16x4_t)\n+\n+/*\n+** test_vduph_laneq_s16:\n+** umov\tw0, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vduph_laneq_s16, int16_t, int16x8_t)\n+\n+/*\n+** test_vduph_lane_f16:\n+** ret\n+*/\n+TEST_DUP_LANE (vduph_lane_f16, float16_t, float16x4_t)\n+\n+/*\n+** test_vduph_laneq_f16:\n+** ret\n+*/\n+TEST_DUP_LANE (vduph_laneq_f16, float16_t, float16x8_t)\n+\n+/*\n+** test_vduph_lane_bf16:\n+** ret\n+*/\n+TEST_DUP_LANE (vduph_lane_bf16, bfloat16_t, bfloat16x4_t)\n+\n+/*\n+** test_vduph_laneq_bf16:\n+** ret\n+*/\n+TEST_DUP_LANE (vduph_laneq_bf16, bfloat16_t, bfloat16x8_t)\n+\n+/*\n+** test_vduph_lane_p16:\n+** umov\tw0, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vduph_lane_p16, poly16_t, poly16x4_t)\n+\n+/*\n+** test_vduph_laneq_p16:\n+** umov\tw0, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_DUP_LANE (vduph_laneq_p16, poly16_t, poly16x8_t)\n+\n+/*\n+** test_vdups_lane_u32:\n+** fmov\tw0, s0\n+** ret\n+*/\n+TEST_DUP_LANE (vdups_lane_u32, uint32_t, uint32x2_t)\n+\n+/*\n+** test_vdups_laneq_u32:\n+** fmov\tw0, s0\n+** ret\n+*/\n+TEST_DUP_LANE (vdups_laneq_u32, uint32_t, uint32x4_t)\n+\n+/*\n+** test_vdups_lane_s32:\n+** fmov\tw0, s0\n+** ret\n+*/\n+TEST_DUP_LANE (vdups_lane_s32, int32_t, int32x2_t)\n+\n+/*\n+** test_vdups_laneq_s32:\n+** fmov\tw0, s0\n+** ret\n+*/\n+TEST_DUP_LANE (vdups_laneq_s32, int32_t, int32x4_t)\n+\n+/*\n+** test_vdups_lane_f32:\n+** ret\n+*/\n+TEST_DUP_LANE (vdups_lane_f32, float32_t, float32x2_t)\n+\n+/*\n+** test_vdups_laneq_f32:\n+** ret\n+*/\n+TEST_DUP_LANE (vdups_laneq_f32, float32_t, float32x4_t)\n+\n+/*\n+** test_vdupd_lane_u64:\n+** fmov\tx0, d0\n+** ret\n+*/\n+TEST_DUP_LANE (vdupd_lane_u64, uint64_t, uint64x1_t)\n+\n+/*\n+** test_vdupd_laneq_u64:\n+** fmov\tx0, d0\n+** ret\n+*/\n+TEST_DUP_LANE (vdupd_laneq_u64, uint64_t, uint64x2_t)\n+\n+/*\n+** test_vdupd_lane_s64:\n+** fmov\tx0, d0\n+** ret\n+*/\n+TEST_DUP_LANE (vdupd_lane_s64, int64_t, int64x1_t)\n+\n+/*\n+** test_vdupd_laneq_s64:\n+** fmov\tx0, d0\n+** ret\n+*/\n+TEST_DUP_LANE (vdupd_laneq_s64, int64_t, int64x2_t)\n+\n+/*\n+** test_vdupd_lane_f64:\n+** ret\n+*/\n+TEST_DUP_LANE (vdupd_lane_f64, float64_t, float64x1_t)\n+\n+/*\n+** test_vdupd_laneq_f64:\n+** ret\n+*/\n+TEST_DUP_LANE (vdupd_laneq_f64, float64_t, float64x2_t)\ndiff --git a/gcc/testsuite/gcc.target/aarch64/neon/vget_high.c b/gcc/testsuite/gcc.target/aarch64/neon/vget_high.c\nnew file mode 100644\nindex 000000000000..d14ba61a62e4\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/neon/vget_high.c\n@@ -0,0 +1,116 @@\n+/* { dg-do compile } */\n+/* { dg-final { check-function-bodies \"**\" \"\" } } */\n+\n+#include \"arm_neon_test.h\"\n+\n+/*\n+** test_vget_high_u8:\n+** dup\td0, v0\\.d\\[1\\]\n+** ret\n+*/\n+TEST_UNARY (vget_high_u8, uint8x8_t, uint8x16_t)\n+\n+/*\n+** test_vget_high_s8:\n+** dup\td0, v0\\.d\\[1\\]\n+** ret\n+*/\n+TEST_UNARY (vget_high_s8, int8x8_t, int8x16_t)\n+\n+/*\n+** test_vget_high_p8:\n+** dup\td0, v0\\.d\\[1\\]\n+** ret\n+*/\n+TEST_UNARY (vget_high_p8, poly8x8_t, poly8x16_t)\n+\n+/*\n+** test_vget_high_mf8:\n+** dup\td0, v0\\.d\\[1\\]\n+** ret\n+*/\n+TEST_UNARY (vget_high_mf8, mfloat8x8_t, mfloat8x16_t)\n+\n+/*\n+** test_vget_high_u16:\n+** dup\td0, v0\\.d\\[1\\]\n+** ret\n+*/\n+TEST_UNARY (vget_high_u16, uint16x4_t, uint16x8_t)\n+\n+/*\n+** test_vget_high_s16:\n+** dup\td0, v0\\.d\\[1\\]\n+** ret\n+*/\n+TEST_UNARY (vget_high_s16, int16x4_t, int16x8_t)\n+\n+/*\n+** test_vget_high_p16:\n+** dup\td0, v0\\.d\\[1\\]\n+** ret\n+*/\n+TEST_UNARY (vget_high_p16, poly16x4_t, poly16x8_t)\n+\n+/*\n+** test_vget_high_f16:\n+** dup\td0, v0\\.d\\[1\\]\n+** ret\n+*/\n+TEST_UNARY (vget_high_f16, float16x4_t, float16x8_t)\n+\n+/*\n+** test_vget_high_bf16:\n+** dup\td0, v0\\.d\\[1\\]\n+** ret\n+*/\n+TEST_UNARY (vget_high_bf16, bfloat16x4_t, bfloat16x8_t)\n+\n+/*\n+** test_vget_high_u32:\n+** dup\td0, v0\\.d\\[1\\]\n+** ret\n+*/\n+TEST_UNARY (vget_high_u32, uint32x2_t, uint32x4_t)\n+\n+/*\n+** test_vget_high_s32:\n+** dup\td0, v0\\.d\\[1\\]\n+** ret\n+*/\n+TEST_UNARY (vget_high_s32, int32x2_t, int32x4_t)\n+\n+/*\n+** test_vget_high_f32:\n+** dup\td0, v0\\.d\\[1\\]\n+** ret\n+*/\n+TEST_UNARY (vget_high_f32, float32x2_t, float32x4_t)\n+\n+/*\n+** test_vget_high_u64:\n+** dup\td0, v0\\.d\\[1\\]\n+** ret\n+*/\n+TEST_UNARY (vget_high_u64, uint64x1_t, uint64x2_t)\n+\n+/*\n+** test_vget_high_s64:\n+** dup\td0, v0\\.d\\[1\\]\n+** ret\n+*/\n+TEST_UNARY (vget_high_s64, int64x1_t, int64x2_t)\n+\n+/*\n+** test_vget_high_p64:\n+** dup\td0, v0\\.d\\[1\\]\n+** ret\n+*/\n+TEST_UNARY (vget_high_p64, poly64x1_t, poly64x2_t)\n+\n+/*\n+** test_vget_high_f64:\n+** dup\td0, v0\\.d\\[1\\]\n+** ret\n+*/\n+TEST_UNARY (vget_high_f64, float64x1_t, float64x2_t)\ndiff --git a/gcc/testsuite/gcc.target/aarch64/neon/vget_lane.c b/gcc/testsuite/gcc.target/aarch64/neon/vget_lane.c\nnew file mode 100644\nindex 000000000000..9f38432c956a\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/neon/vget_lane.c\n@@ -0,0 +1,232 @@\n+/* { dg-do compile } */\n+/* { dg-final { check-function-bodies \"**\" \"\" } } */\n+\n+#include \"arm_neon_test.h\"\n+\n+#define TEST_GET_LANE(NAME, RET_TYPE, ARG_TYPE) \\\n+ RET_TYPE test_##NAME (ARG_TYPE arg1) \\\n+ { \\\n+ return NAME (arg1, VEC_LEN (arg1) - 1); \\\n+ }\n+\n+/*\n+** test_vget_lane_u8:\n+** umov\tw0, v0\\.b\\[7\\]\n+** ret\n+*/\n+TEST_GET_LANE (vget_lane_u8, uint8_t, uint8x8_t)\n+\n+/*\n+** test_vget_lane_s8:\n+** umov\tw0, v0\\.b\\[7\\]\n+** ret\n+*/\n+TEST_GET_LANE (vget_lane_s8, int8_t, int8x8_t)\n+\n+/*\n+** test_vget_lane_p8:\n+** umov\tw0, v0\\.b\\[7\\]\n+** ret\n+*/\n+TEST_GET_LANE (vget_lane_p8, poly8_t, poly8x8_t)\n+\n+/*\n+** test_vget_lane_mf8:\n+** dup\tb0, v0\\.b\\[7\\]\n+** ret\n+*/\n+TEST_GET_LANE (vget_lane_mf8, mfloat8_t, mfloat8x8_t)\n+\n+/*\n+** test_vgetq_lane_u8:\n+** umov\tw0, v0\\.b\\[15\\]\n+** ret\n+*/\n+TEST_GET_LANE (vgetq_lane_u8, uint8_t, uint8x16_t)\n+\n+/*\n+** test_vgetq_lane_s8:\n+** umov\tw0, v0\\.b\\[15\\]\n+** ret\n+*/\n+TEST_GET_LANE (vgetq_lane_s8, int8_t, int8x16_t)\n+\n+/*\n+** test_vgetq_lane_p8:\n+** umov\tw0, v0\\.b\\[15\\]\n+** ret\n+*/\n+TEST_GET_LANE (vgetq_lane_p8, poly8_t, poly8x16_t)\n+\n+/*\n+** test_vgetq_lane_mf8:\n+** dup\tb0, v0\\.b\\[15\\]\n+** ret\n+*/\n+TEST_GET_LANE (vgetq_lane_mf8, mfloat8_t, mfloat8x16_t)\n+\n+/*\n+** test_vget_lane_u16:\n+** umov\tw0, v0\\.h\\[3\\]\n+** ret\n+*/\n+TEST_GET_LANE (vget_lane_u16, uint16_t, uint16x4_t)\n+\n+/*\n+** test_vget_lane_s16:\n+** umov\tw0, v0\\.h\\[3\\]\n+** ret\n+*/\n+TEST_GET_LANE (vget_lane_s16, int16_t, int16x4_t)\n+\n+/*\n+** test_vget_lane_p16:\n+** umov\tw0, v0\\.h\\[3\\]\n+** ret\n+*/\n+TEST_GET_LANE (vget_lane_p16, poly16_t, poly16x4_t)\n+\n+/*\n+** test_vget_lane_f16:\n+** dup\th0, v0\\.h\\[3\\]\n+** ret\n+*/\n+TEST_GET_LANE (vget_lane_f16, float16_t, float16x4_t)\n+\n+/*\n+** test_vget_lane_bf16:\n+** dup\th0, v0\\.h\\[3\\]\n+** ret\n+*/\n+TEST_GET_LANE (vget_lane_bf16, bfloat16_t, bfloat16x4_t)\n+\n+/*\n+** test_vgetq_lane_u16:\n+** umov\tw0, v0\\.h\\[7\\]\n+** ret\n+*/\n+TEST_GET_LANE (vgetq_lane_u16, uint16_t, uint16x8_t)\n+\n+/*\n+** test_vgetq_lane_s16:\n+** umov\tw0, v0\\.h\\[7\\]\n+** ret\n+*/\n+TEST_GET_LANE (vgetq_lane_s16, int16_t, int16x8_t)\n+\n+/*\n+** test_vgetq_lane_p16:\n+** umov\tw0, v0\\.h\\[7\\]\n+** ret\n+*/\n+TEST_GET_LANE (vgetq_lane_p16, poly16_t, poly16x8_t)\n+\n+/*\n+** test_vgetq_lane_f16:\n+** dup\th0, v0\\.h\\[7\\]\n+** ret\n+*/\n+TEST_GET_LANE (vgetq_lane_f16, float16_t, float16x8_t)\n+\n+/*\n+** test_vgetq_lane_bf16:\n+** dup\th0, v0\\.h\\[7\\]\n+** ret\n+*/\n+TEST_GET_LANE (vgetq_lane_bf16, bfloat16_t, bfloat16x8_t)\n+\n+/*\n+** test_vget_lane_u32:\n+** umov\tw0, v0\\.s\\[1\\]\n+** ret\n+*/\n+TEST_GET_LANE (vget_lane_u32, uint32_t, uint32x2_t)\n+\n+/*\n+** test_vget_lane_s32:\n+** umov\tw0, v0\\.s\\[1\\]\n+** ret\n+*/\n+TEST_GET_LANE (vget_lane_s32, int32_t, int32x2_t)\n+\n+/*\n+** test_vget_lane_f32:\n+** dup\ts0, v0\\.s\\[1\\]\n+** ret\n+*/\n+TEST_GET_LANE (vget_lane_f32, float32_t, float32x2_t)\n+\n+/*\n+** test_vgetq_lane_u32:\n+** umov\tw0, v0\\.s\\[3\\]\n+** ret\n+*/\n+TEST_GET_LANE (vgetq_lane_u32, uint32_t, uint32x4_t)\n+\n+/*\n+** test_vgetq_lane_s32:\n+** umov\tw0, v0\\.s\\[3\\]\n+** ret\n+*/\n+TEST_GET_LANE (vgetq_lane_s32, int32_t, int32x4_t)\n+\n+/*\n+** test_vgetq_lane_f32:\n+** dup\ts0, v0\\.s\\[3\\]\n+** ret\n+*/\n+TEST_GET_LANE (vgetq_lane_f32, float32_t, float32x4_t)\n+\n+/*\n+** test_vget_lane_u64:\n+** fmov\tx0, d0\n+** ret\n+*/\n+TEST_GET_LANE (vget_lane_u64, uint64_t, uint64x1_t)\n+\n+/*\n+** test_vget_lane_s64:\n+** fmov\tx0, d0\n+** ret\n+*/\n+TEST_GET_LANE (vget_lane_s64, int64_t, int64x1_t)\n+\n+/*\n+** test_vget_lane_p64:\n+** fmov\tx0, d0\n+** ret\n+*/\n+TEST_GET_LANE (vget_lane_p64, poly64_t, poly64x1_t)\n+\n+/*\n+** test_vget_lane_f64:\n+** ret\n+*/\n+TEST_GET_LANE (vget_lane_f64, float64_t, float64x1_t)\n+/*\n+** test_vgetq_lane_u64:\n+** umov\tx0, v0\\.d\\[1\\]\n+** ret\n+*/\n+TEST_GET_LANE (vgetq_lane_u64, uint64_t, uint64x2_t)\n+\n+/*\n+** test_vgetq_lane_s64:\n+** umov\tx0, v0\\.d\\[1\\]\n+** ret\n+*/\n+TEST_GET_LANE (vgetq_lane_s64, int64_t, int64x2_t)\n+\n+/*\n+** test_vgetq_lane_p64:\n+** umov\tx0, v0\\.d\\[1\\]\n+** ret\n+*/\n+TEST_GET_LANE (vgetq_lane_p64, poly64_t, poly64x2_t)\n+\n+/*\n+** test_vgetq_lane_f64:\n+** dup\td0, v0\\.d\\[1\\]\n+** ret\n+*/\n+TEST_GET_LANE (vgetq_lane_f64, float64_t, float64x2_t)\ndiff --git a/gcc/testsuite/gcc.target/aarch64/neon/vget_low.c b/gcc/testsuite/gcc.target/aarch64/neon/vget_low.c\nnew file mode 100644\nindex 000000000000..bc6dea5c94c7\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/neon/vget_low.c\n@@ -0,0 +1,100 @@\n+/* { dg-do compile } */\n+/* { dg-final { check-function-bodies \"**\" \"\" } } */\n+\n+#include \"arm_neon_test.h\"\n+\n+/*\n+** test_vget_low_u8:\n+** ret\n+*/\n+TEST_UNARY (vget_low_u8, uint8x8_t, uint8x16_t)\n+\n+/*\n+** test_vget_low_s8:\n+** ret\n+*/\n+TEST_UNARY (vget_low_s8, int8x8_t, int8x16_t)\n+\n+/*\n+** test_vget_low_p8:\n+** ret\n+*/\n+TEST_UNARY (vget_low_p8, poly8x8_t, poly8x16_t)\n+\n+/*\n+** test_vget_low_mf8:\n+** ret\n+*/\n+TEST_UNARY (vget_low_mf8, mfloat8x8_t, mfloat8x16_t)\n+\n+/*\n+** test_vget_low_u16:\n+** ret\n+*/\n+TEST_UNARY (vget_low_u16, uint16x4_t, uint16x8_t)\n+\n+/*\n+** test_vget_low_s16:\n+** ret\n+*/\n+TEST_UNARY (vget_low_s16, int16x4_t, int16x8_t)\n+\n+/*\n+** test_vget_low_p16:\n+** ret\n+*/\n+TEST_UNARY (vget_low_p16, poly16x4_t, poly16x8_t)\n+\n+/*\n+** test_vget_low_f16:\n+** ret\n+*/\n+TEST_UNARY (vget_low_f16, float16x4_t, float16x8_t)\n+\n+/*\n+** test_vget_low_bf16:\n+** ret\n+*/\n+TEST_UNARY (vget_low_bf16, bfloat16x4_t, bfloat16x8_t)\n+\n+/*\n+** test_vget_low_u32:\n+** ret\n+*/\n+TEST_UNARY (vget_low_u32, uint32x2_t, uint32x4_t)\n+\n+/*\n+** test_vget_low_s32:\n+** ret\n+*/\n+TEST_UNARY (vget_low_s32, int32x2_t, int32x4_t)\n+\n+/*\n+** test_vget_low_f32:\n+** ret\n+*/\n+TEST_UNARY (vget_low_f32, float32x2_t, float32x4_t)\n+\n+/*\n+** test_vget_low_u64:\n+** ret\n+*/\n+TEST_UNARY (vget_low_u64, uint64x1_t, uint64x2_t)\n+\n+/*\n+** test_vget_low_s64:\n+** ret\n+*/\n+TEST_UNARY (vget_low_s64, int64x1_t, int64x2_t)\n+\n+/*\n+** test_vget_low_p64:\n+** ret\n+*/\n+TEST_UNARY (vget_low_p64, poly64x1_t, poly64x2_t)\n+\n+/*\n+** test_vget_low_f64:\n+** ret\n+*/\n+TEST_UNARY (vget_low_f64, float64x1_t, float64x2_t)\ndiff --git a/gcc/testsuite/gcc.target/aarch64/neon/vmov_n.c b/gcc/testsuite/gcc.target/aarch64/neon/vmov_n.c\nnew file mode 100644\nindex 000000000000..072d2466b29f\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/neon/vmov_n.c\n@@ -0,0 +1,212 @@\n+/* { dg-do compile } */\n+/* { dg-final { check-function-bodies \"**\" \"\" } } */\n+\n+#include \"arm_neon_test.h\"\n+\n+/*\n+** test_vmov_n_p8:\n+** dup\tv0\\.8b, w0\n+** ret\n+*/\n+TEST_UNARY (vmov_n_p8, poly8x8_t, poly8_t)\n+\n+/*\n+** test_vmov_n_mf8:\n+** dup\tv0\\.8b, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_UNARY (vmov_n_mf8, mfloat8x8_t, mfloat8_t)\n+\n+/*\n+** test_vmov_n_u8:\n+** dup\tv0\\.8b, w0\n+** ret\n+*/\n+TEST_UNARY (vmov_n_u8, uint8x8_t, uint8_t)\n+\n+/*\n+** test_vmov_n_s8:\n+** dup\tv0\\.8b, w0\n+** ret\n+*/\n+TEST_UNARY (vmov_n_s8, int8x8_t, int8_t)\n+\n+/*\n+** test_vmovq_n_p8:\n+** dup\tv0\\.16b, w0\n+** ret\n+*/\n+TEST_UNARY (vmovq_n_p8, poly8x16_t, poly8_t)\n+\n+/*\n+** test_vmovq_n_mf8:\n+** dup\tv0\\.16b, v0\\.b\\[0\\]\n+** ret\n+*/\n+TEST_UNARY (vmovq_n_mf8, mfloat8x16_t, mfloat8_t)\n+\n+/*\n+** test_vmovq_n_u8:\n+** dup\tv0\\.16b, w0\n+** ret\n+*/\n+TEST_UNARY (vmovq_n_u8, uint8x16_t, uint8_t)\n+\n+/*\n+** test_vmovq_n_s8:\n+** dup\tv0\\.16b, w0\n+** ret\n+*/\n+TEST_UNARY (vmovq_n_s8, int8x16_t, int8_t)\n+\n+/*\n+** test_vmov_n_p16:\n+** dup\tv0\\.4h, w0\n+** ret\n+*/\n+TEST_UNARY (vmov_n_p16, poly16x4_t, poly16_t)\n+\n+/*\n+** test_vmov_n_f16:\n+** dup\tv0\\.4h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_UNARY (vmov_n_f16, float16x4_t, float16_t)\n+\n+/*\n+** test_vmov_n_u16:\n+** dup\tv0\\.4h, w0\n+** ret\n+*/\n+TEST_UNARY (vmov_n_u16, uint16x4_t, uint16_t)\n+\n+/*\n+** test_vmov_n_s16:\n+** dup\tv0\\.4h, w0\n+** ret\n+*/\n+TEST_UNARY (vmov_n_s16, int16x4_t, int16_t)\n+\n+/*\n+** test_vmovq_n_p16:\n+** dup\tv0\\.8h, w0\n+** ret\n+*/\n+TEST_UNARY (vmovq_n_p16, poly16x8_t, poly16_t)\n+\n+/*\n+** test_vmovq_n_f16:\n+** dup\tv0\\.8h, v0\\.h\\[0\\]\n+** ret\n+*/\n+TEST_UNARY (vmovq_n_f16, float16x8_t, float16_t)\n+\n+/*\n+** test_vmovq_n_u16:\n+** dup\tv0\\.8h, w0\n+** ret\n+*/\n+TEST_UNARY (vmovq_n_u16, uint16x8_t, uint16_t)\n+\n+/*\n+** test_vmovq_n_s16:\n+** dup\tv0\\.8h, w0\n+** ret\n+*/\n+TEST_UNARY (vmovq_n_s16, int16x8_t, int16_t)\n+\n+/*\n+** test_vmov_n_f32:\n+** dup\tv0\\.2s, v0\\.s\\[0\\]\n+** ret\n+*/\n+TEST_UNARY (vmov_n_f32, float32x2_t, float32_t)\n+\n+/*\n+** test_vmov_n_u32:\n+** dup\tv0\\.2s, w0\n+** ret\n+*/\n+TEST_UNARY (vmov_n_u32, uint32x2_t, uint32_t)\n+\n+/*\n+** test_vmov_n_s32:\n+** dup\tv0\\.2s, w0\n+** ret\n+*/\n+TEST_UNARY (vmov_n_s32, int32x2_t, int32_t)\n+\n+/*\n+** test_vmovq_n_f32:\n+** dup\tv0\\.4s, v0\\.s\\[0\\]\n+** ret\n+*/\n+TEST_UNARY (vmovq_n_f32, float32x4_t, float32_t)\n+\n+/*\n+** test_vmovq_n_u32:\n+** dup\tv0\\.4s, w0\n+** ret\n+*/\n+TEST_UNARY (vmovq_n_u32, uint32x4_t, uint32_t)\n+\n+/*\n+** test_vmovq_n_s32:\n+** dup\tv0\\.4s, w0\n+** ret\n+*/\n+TEST_UNARY (vmovq_n_s32, int32x4_t, int32_t)\n+\n+/*\n+** test_vmov_n_p64:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_UNARY (vmov_n_p64, poly64x1_t, poly64_t)\n+\n+/*\n+** test_vmov_n_f64:\n+** ret\n+*/\n+TEST_UNARY (vmov_n_f64, float64x1_t, float64_t)\n+\n+/*\n+** test_vmov_n_u64:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_UNARY (vmov_n_u64, uint64x1_t, uint64_t)\n+/*\n+** test_vmov_n_s64:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_UNARY (vmov_n_s64, int64x1_t, int64_t)\n+\n+/*\n+** test_vmovq_n_p64:\n+** dup\tv0\\.2d, x0\n+** ret\n+*/\n+TEST_UNARY (vmovq_n_p64, poly64x2_t, poly64_t)\n+\n+/*\n+** test_vmovq_n_f64:\n+** dup\tv0\\.2d, v0\\.d\\[0\\]\n+** ret\n+*/\n+TEST_UNARY (vmovq_n_f64, float64x2_t, float64_t)\n+\n+/*\n+** test_vmovq_n_u64:\n+** dup\tv0\\.2d, x0\n+** ret\n+*/\n+TEST_UNARY (vmovq_n_u64, uint64x2_t, uint64_t)\n+\n+/*\n+** test_vmovq_n_s64:\n+** dup\tv0\\.2d, x0\n+** ret\n+*/\n+TEST_UNARY (vmovq_n_s64, int64x2_t, int64_t)\ndiff --git a/gcc/testsuite/gcc.target/aarch64/neon/vset_lane.c b/gcc/testsuite/gcc.target/aarch64/neon/vset_lane.c\nnew file mode 100644\nindex 000000000000..a0264c8419db\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/neon/vset_lane.c\n@@ -0,0 +1,234 @@\n+/* { dg-do compile } */\n+/* { dg-final { check-function-bodies \"**\" \"\" } } */\n+\n+#include \"arm_neon_test.h\"\n+\n+#define TEST_SET_LANE(NAME, ELEM_TYPE, VEC_TYPE) \\\n+ VEC_TYPE test_##NAME (VEC_TYPE vec, ELEM_TYPE elem) \\\n+ { \\\n+ return NAME (elem, vec, 0); \\\n+ }\n+\n+/*\n+** test_vset_lane_f16:\n+** ins\tv0\\.h\\[0\\], v1\\.h\\[0\\]\n+** ret\n+*/\n+TEST_SET_LANE (vset_lane_f16, float16_t, float16x4_t)\n+\n+/*\n+** test_vset_lane_f32:\n+** ins\tv0\\.s\\[0\\], v1\\.s\\[0\\]\n+** ret\n+*/\n+TEST_SET_LANE (vset_lane_f32, float32_t, float32x2_t)\n+\n+/*\n+** test_vset_lane_f64:\n+** fmov\td0, d1\n+** ret\n+*/\n+TEST_SET_LANE (vset_lane_f64, float64_t, float64x1_t)\n+\n+/*\n+** test_vset_lane_p8:\n+** ins\tv0\\.b\\[0\\], w0\n+** ret\n+*/\n+TEST_SET_LANE (vset_lane_p8, poly8_t, poly8x8_t)\n+\n+/*\n+** test_vset_lane_mf8:\n+** ins\tv0\\.b\\[0\\], v1\\.b\\[0\\]\n+** ret\n+*/\n+TEST_SET_LANE (vset_lane_mf8, mfloat8_t, mfloat8x8_t)\n+\n+/*\n+** test_vset_lane_p16:\n+** ins\tv0\\.h\\[0\\], w0\n+** ret\n+*/\n+TEST_SET_LANE (vset_lane_p16, poly16_t, poly16x4_t)\n+\n+/*\n+** test_vset_lane_p64:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_SET_LANE (vset_lane_p64, poly64_t, poly64x1_t)\n+\n+/*\n+** test_vset_lane_s8:\n+** ins\tv0\\.b\\[0\\], w0\n+** ret\n+*/\n+TEST_SET_LANE (vset_lane_s8, int8_t, int8x8_t)\n+\n+/*\n+** test_vset_lane_s16:\n+** ins\tv0\\.h\\[0\\], w0\n+** ret\n+*/\n+TEST_SET_LANE (vset_lane_s16, int16_t, int16x4_t)\n+\n+/*\n+** test_vset_lane_s32:\n+** ins\tv0\\.s\\[0\\], w0\n+** ret\n+*/\n+TEST_SET_LANE (vset_lane_s32, int32_t, int32x2_t)\n+\n+/*\n+** test_vset_lane_s64:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_SET_LANE (vset_lane_s64, int64_t, int64x1_t)\n+\n+/*\n+** test_vset_lane_u8:\n+** ins\tv0\\.b\\[0\\], w0\n+** ret\n+*/\n+TEST_SET_LANE (vset_lane_u8, uint8_t, uint8x8_t)\n+\n+/*\n+** test_vset_lane_u16:\n+** ins\tv0\\.h\\[0\\], w0\n+** ret\n+*/\n+TEST_SET_LANE (vset_lane_u16, uint16_t, uint16x4_t)\n+\n+/*\n+** test_vset_lane_u32:\n+** ins\tv0\\.s\\[0\\], w0\n+** ret\n+*/\n+TEST_SET_LANE (vset_lane_u32, uint32_t, uint32x2_t)\n+\n+/*\n+** test_vset_lane_u64:\n+** fmov\td0, x0\n+** ret\n+*/\n+TEST_SET_LANE (vset_lane_u64, uint64_t, uint64x1_t)\n+\n+/*\n+** test_vsetq_lane_f16:\n+** ins\tv0\\.h\\[0\\], v1\\.h\\[0\\]\n+** ret\n+*/\n+TEST_SET_LANE (vsetq_lane_f16, float16_t, float16x8_t)\n+\n+/*\n+** test_vsetq_lane_f32:\n+** ins\tv0\\.s\\[0\\], v1\\.s\\[0\\]\n+** ret\n+*/\n+TEST_SET_LANE (vsetq_lane_f32, float32_t, float32x4_t)\n+\n+/*\n+** test_vsetq_lane_f64:\n+** ins\tv0\\.d\\[0\\], v1\\.d\\[0\\]\n+** ret\n+*/\n+TEST_SET_LANE (vsetq_lane_f64, float64_t, float64x2_t)\n+\n+/*\n+** test_vsetq_lane_p8:\n+** ins\tv0\\.b\\[0\\], w0\n+** ret\n+*/\n+TEST_SET_LANE (vsetq_lane_p8, poly8_t, poly8x16_t)\n+\n+/*\n+** test_vsetq_lane_mf8:\n+** ins\tv0\\.b\\[0\\], v1\\.b\\[0\\]\n+** ret\n+*/\n+TEST_SET_LANE (vsetq_lane_mf8, mfloat8_t, mfloat8x16_t)\n+\n+/*\n+** test_vsetq_lane_p16:\n+** ins\tv0\\.h\\[0\\], w0\n+** ret\n+*/\n+TEST_SET_LANE (vsetq_lane_p16, poly16_t, poly16x8_t)\n+\n+/*\n+** test_vsetq_lane_p64:\n+** ins\tv0\\.d\\[0\\], x0\n+** ret\n+*/\n+TEST_SET_LANE (vsetq_lane_p64, poly64_t, poly64x2_t)\n+\n+/*\n+** test_vsetq_lane_s8:\n+** ins\tv0\\.b\\[0\\], w0\n+** ret\n+*/\n+TEST_SET_LANE (vsetq_lane_s8, int8_t, int8x16_t)\n+\n+/*\n+** test_vsetq_lane_s16:\n+** ins\tv0\\.h\\[0\\], w0\n+** ret\n+*/\n+TEST_SET_LANE (vsetq_lane_s16, int16_t, int16x8_t)\n+\n+/*\n+** test_vsetq_lane_s32:\n+** ins\tv0\\.s\\[0\\], w0\n+** ret\n+*/\n+TEST_SET_LANE (vsetq_lane_s32, int32_t, int32x4_t)\n+\n+/*\n+** test_vsetq_lane_s64:\n+** ins\tv0\\.d\\[0\\], x0\n+** ret\n+*/\n+TEST_SET_LANE (vsetq_lane_s64, int64_t, int64x2_t)\n+\n+/*\n+** test_vsetq_lane_u8:\n+** ins\tv0\\.b\\[0\\], w0\n+** ret\n+*/\n+TEST_SET_LANE (vsetq_lane_u8, uint8_t, uint8x16_t)\n+\n+/*\n+** test_vsetq_lane_u16:\n+** ins\tv0\\.h\\[0\\], w0\n+** ret\n+*/\n+TEST_SET_LANE (vsetq_lane_u16, uint16_t, uint16x8_t)\n+\n+/*\n+** test_vsetq_lane_u32:\n+** ins\tv0\\.s\\[0\\], w0\n+** ret\n+*/\n+TEST_SET_LANE (vsetq_lane_u32, uint32_t, uint32x4_t)\n+\n+/*\n+** test_vsetq_lane_u64:\n+** ins\tv0\\.d\\[0\\], x0\n+** ret\n+*/\n+TEST_SET_LANE (vsetq_lane_u64, uint64_t, uint64x2_t)\n+\n+/*\n+** test_vset_lane_bf16:\n+** ins\tv0\\.h\\[0\\], v1\\.h\\[0\\]\n+** ret\n+*/\n+TEST_SET_LANE (vset_lane_bf16, bfloat16_t, bfloat16x4_t)\n+\n+/*\n+** test_vsetq_lane_bf16:\n+** ins\tv0\\.h\\[0\\], v1\\.h\\[0\\]\n+** ret\n+*/\n+TEST_SET_LANE (vsetq_lane_bf16, bfloat16_t, bfloat16x8_t)\ndiff --git a/gcc/testsuite/gcc.target/aarch64/pr113573.c b/gcc/testsuite/gcc.target/aarch64/pr113573.c\nindex 30175c4cb5c8..068b10844753 100644\n--- a/gcc/testsuite/gcc.target/aarch64/pr113573.c\n+++ b/gcc/testsuite/gcc.target/aarch64/pr113573.c\n@@ -5,36 +5,46 @@ typedef __Uint8x8_t uint8x8_t;\n typedef __Uint16x4_t uint16x4_t;\n typedef __Int16x8_t int16x8_t;\n typedef __Uint16x8_t uint16x8_t;\n+\n int jsimd_extbgrx_ycc_convert_neon_image_width,\n- jsimd_extbgrx_ycc_convert_neon___trans_tmp_1;\n+ jsimd_extbgrx_ycc_convert_neon___trans_tmp_1;\n+\n uint16x4_t jsimd_extbgrx_ycc_convert_neon___trans_tmp_2;\n-uint16x8_t vcombine_u16();\n-uint16x8_t vmovl_u8(uint8x8_t __a) {\n- return __builtin_aarch64_uxtlv8hi_uu(__a);\n+uint16x8_t foo1 (...);\n+\n+uint16x8_t\n+foo2 (uint8x8_t __a)\n+{\n+ return __builtin_aarch64_uxtlv8hi_uu (__a);\n }\n-__inline int __attribute__((__gnu_inline__)) vmull_laneq_u16();\n-uint8x8x4_t vld4_u8();\n-void jsimd_extbgrx_ycc_convert_neon() {\n+\n+__inline int __attribute__ ((__gnu_inline__)) foo3 (...);\n+\n+uint8x8x4_t foo4 (...);\n+void\n+jsimd_extbgrx_ycc_convert_neon ()\n+{\n int scaled_128_5 = jsimd_extbgrx_ycc_convert_neon___trans_tmp_1,\n cols_remaining = jsimd_extbgrx_ycc_convert_neon_image_width;\n for (;;)\n- if (cols_remaining) {\n- uint8x8x4_t input_pixels = vld4_u8();\n- uint16x8_t r = vmovl_u8(input_pixels.val[2]);\n- uint16x8_t g = vmovl_u8(input_pixels.val[1]);\n- uint16x8_t b = vmovl_u8(input_pixels.val[0]);\n- int y_l = vmull_laneq_u16(r);\n- uint16x8_t __a = g;\n- jsimd_extbgrx_ycc_convert_neon___trans_tmp_2 =\n- (uint16x4_t)vget_low_s16((int16x8_t)__a);\n- __a = b;\n- int cb_l = scaled_128_5;\n- int cb_h = scaled_128_5;\n- int cr_l = scaled_128_5;\n- int cr_h = scaled_128_5;\n- uint16x8_t y_u16 = vcombine_u16(y_l);\n- uint16x8_t cb_u16 = vcombine_u16(cb_l, cb_h);\n- uint16x8_t cr_u16 = vcombine_u16(cr_l, cr_h);\n- __a = y_u16 = cb_u16 = cr_u16;\n- }\n+ if (cols_remaining)\n+ {\n+\tuint8x8x4_t input_pixels = foo4 ();\n+\tuint16x8_t r = foo2 (input_pixels.val[2]);\n+\tuint16x8_t g = foo2 (input_pixels.val[1]);\n+\tuint16x8_t b = foo2 (input_pixels.val[0]);\n+\tint y_l = foo3 (r);\n+\tuint16x8_t __a = g;\n+\tjsimd_extbgrx_ycc_convert_neon___trans_tmp_2 =\n+\t (uint16x4_t) vget_low_s16 ((int16x8_t) __a);\n+\t__a = b;\n+\tint cb_l = scaled_128_5;\n+\tint cb_h = scaled_128_5;\n+\tint cr_l = scaled_128_5;\n+\tint cr_h = scaled_128_5;\n+\tuint16x8_t y_u16 = foo1 (y_l);\n+\tuint16x8_t cb_u16 = foo1 (cb_l, cb_h);\n+\tuint16x8_t cr_u16 = foo1 (cr_l, cr_h);\n+\t__a = y_u16 = cb_u16 = cr_u16;\n+ }\n }\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_6.c b/gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_6.c\nindex 83ef2148fd84..b6030fc58256 100644\n--- a/gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_6.c\n+++ b/gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_6.c\n@@ -11,6 +11,13 @@ typedef int16_t int16x16_t __attribute__ ((vector_size (32)));\n \n int8x16_t z;\n \n+/*\n+** test_addressable:\n+**\tadrp\tx([0-9]+), \\.LANCHOR0\n+**\tldr\tq([0-9]+), \\[x\\1, #?:lo12:\\.LANCHOR0\\]\n+**\tsxtl2\tv0\\.8h, v\\2\\.16b\n+**\tret\n+*/\n int16x8_t\n test_addressable ()\n {\n@@ -19,7 +26,7 @@ test_addressable ()\n \n /*\n ** test_scalable_type:\n-**\tsxtl2\tv0.8h, v0.16b\n+**\tsxtl2\tv0\\.8h, v0\\.16b\n **\tret\n */\n int16x8_t\n@@ -28,17 +35,26 @@ test_scalable_type (svint8_t scalable)\n return vmovl_s8 (vget_high_s8 (svget_neonq_s8 (scalable)));\n }\n \n+/*\n+** test_scalar_type:\n+**\tfmov\td([0-9]+), x1\n+**\tsxtl\tv0\\.8h, v\\1\\.8b\n+**\tret\n+*/\n int16x8_t\n test_scalar_type (__int128_t foo)\n {\n return vmovl_s8 (vget_high_s8 (vreinterpretq_s8_p128 (foo)));\n }\n \n+/*\n+** test_256b_type:\n+**\tldr\td([0-9]+), \\[x0, #?8\\]\n+**\tsxtl\tv0\\.4s, v\\1\\.4h\n+**\tret\n+*/\n int32x4_t\n test_256b_type (int16x16_t foo)\n {\n return vmovl_s16 ((int16x4_t) { foo[4], foo[5], foo[6], foo[7] });\n }\n-\n-/* { dg-final { scan-assembler-times {sxtl2\\t} 1 } } */\n-/* { dg-final { scan-assembler-times {sxtl\\t} 3 } } */\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/mf8_data_2.c b/gcc/testsuite/gcc.target/aarch64/simd/mf8_data_2.c\nindex 0f923f247d4a..f69165219a84 100644\n--- a/gcc/testsuite/gcc.target/aarch64/simd/mf8_data_2.c\n+++ b/gcc/testsuite/gcc.target/aarch64/simd/mf8_data_2.c\n@@ -14,7 +14,6 @@ void test(mfloat8x8_t x8, mfloat8x16_t x16,\n vcopy_lane_mf8(x8, 0, x8, -1); /* { dg-error {passing -1 to argument 4 of 'vcopy_lane_mf8', which expects a value in the range \\[0, 7\\]} } */\n vcopy_lane_mf8(x8, 0, x8, 8); /* { dg-error {passing 8 to argument 4 of 'vcopy_lane_mf8', which expects a value in the range \\[0, 7\\]} } */\n vcopy_lane_mf8(x8, 100, x8, 100); /* { dg-error {passing 100 to argument 2 of 'vcopy_lane_mf8', which expects a value in the range \\[0, 7\\]} } */\n- /* { dg-error {passing 100 to argument 4 of 'vcopy_lane_mf8', which expects a value in the range \\[0, 7\\]} \"\" { target *-*-* } .-1 } */\n \n vcopy_laneq_mf8(x8, -1, x16, 0); /* { dg-error {passing -1 to argument 2 of 'vcopy_laneq_mf8', which expects a value in the range \\[0, 7\\]} } */\n vcopy_laneq_mf8(x8, 8, x16, 0); /* { dg-error {passing 8 to argument 2 of 'vcopy_laneq_mf8', which expects a value in the range \\[0, 7\\]} } */\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_f32_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_f32_indices_1.c\ndeleted file mode 100644\nindex d16a3e882d52..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_f32_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-float32_t\n-test_vget_lane_f32_before (float32x2_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 1\" \"\" {target *-*-*} 0 } */\n- return vget_lane_f32 (in, -1);\n-}\n-\n-float32_t\n-test_vget_lane_f32_beyond (float32x2_t in)\n-{\n- /* { dg-error \"lane 2 out of range 0 - 1\" \"\" {target *-*-*} 0 } */\n- return vget_lane_f32 (in, 2);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_f64_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_f64_indices_1.c\ndeleted file mode 100644\nindex 0e90429ae964..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_f64_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-float64_t\n-test_vget_lane_f64_before (float64x1_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 0\" \"\" {target *-*-*} 0 } */\n- return vget_lane_f64 (in, -1);\n-}\n-\n-float64_t\n-test_vget_lane_f64_beyond (float64x1_t in)\n-{\n- /* { dg-error \"lane 1 out of range 0 - 0\" \"\" {target *-*-*} 0 } */\n- return vget_lane_f64 (in, 1);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_indices.c b/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_indices.c\nnew file mode 100644\nindex 000000000000..fc30f37aba30\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_indices.c\n@@ -0,0 +1,46 @@\n+/* { dg-do assemble } */\n+\n+#include <arm_neon.h>\n+\n+#define VEC_LEN(VEC) (sizeof (VEC) / sizeof ((VEC)[0]))\n+\n+#define TEST_VGET_LANE(NAME, RET_TYPE, ARG_TYPE) \\\n+ RET_TYPE test_##NAME (ARG_TYPE arg) { return NAME (arg, VEC_LEN (arg)); }\n+\n+TEST_VGET_LANE (vget_lane_u8, uint8_t, uint8x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vget_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vget_lane_s8, int8_t, int8x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vget_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vget_lane_p8, poly8_t, poly8x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vget_lane_[a-z0-9]+', [^\\n]+} } */\n+\n+TEST_VGET_LANE (vget_lane_u16, uint16_t, uint16x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vget_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vget_lane_s16, int16_t, int16x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vget_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vget_lane_p16, poly16_t, poly16x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vget_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vget_lane_f16, float16_t, float16x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vget_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vget_lane_bf16, bfloat16_t, bfloat16x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vget_lane_[a-z0-9]+', [^\\n]+} } */\n+\n+TEST_VGET_LANE (vget_lane_u32, uint32_t, uint32x2_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vget_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vget_lane_s32, int32_t, int32x2_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vget_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vget_lane_f32, float32_t, float32x2_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vget_lane_[a-z0-9]+', [^\\n]+} } */\n+\n+TEST_VGET_LANE (vget_lane_u64, uint64_t, uint64x1_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vget_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vget_lane_s64, int64_t, int64x1_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vget_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vget_lane_f64, float64_t, float64x1_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vget_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vget_lane_p64, poly64_t, poly64x1_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vget_lane_[a-z0-9]+', [^\\n]+} } */\n+\n+TEST_VGET_LANE (vgetq_lane_u8, uint8_t, uint8x16_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vgetq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vgetq_lane_s8, int8_t, int8x16_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vgetq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vgetq_lane_p8, poly8_t, poly8x16_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vgetq_lane_[a-z0-9]+', [^\\n]+} } */\n+\n+TEST_VGET_LANE (vgetq_lane_u16, uint16_t, uint16x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vgetq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vgetq_lane_s16, int16_t, int16x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vgetq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vgetq_lane_p16, poly16_t, poly16x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vgetq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vgetq_lane_f16, float16_t, float16x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vgetq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vgetq_lane_bf16, bfloat16_t, bfloat16x8_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vgetq_lane_[a-z0-9]+', [^\\n]+} } */\n+\n+TEST_VGET_LANE (vgetq_lane_u32, uint32_t, uint32x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vgetq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vgetq_lane_s32, int32_t, int32x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vgetq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vgetq_lane_f32, float32_t, float32x4_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vgetq_lane_[a-z0-9]+', [^\\n]+} } */\n+\n+TEST_VGET_LANE (vgetq_lane_u64, uint64_t, uint64x2_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vgetq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vgetq_lane_s64, int64_t, int64x2_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vgetq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vgetq_lane_f64, float64_t, float64x2_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vgetq_lane_[a-z0-9]+', [^\\n]+} } */\n+TEST_VGET_LANE (vgetq_lane_p64, poly64_t, poly64x2_t) /* { dg-error {passing [0-9]+ to argument [0-9]+ of 'vgetq_lane_[a-z0-9]+', [^\\n]+} } */\n\\ No newline at end of file\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_p16_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_p16_indices_1.c\ndeleted file mode 100644\nindex bcf253945193..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_p16_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-poly16_t\n-test_vget_lane_p16_before (poly16x4_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 3\" \"\" {target *-*-*} 0 } */\n- return vget_lane_p16 (in, -1);\n-}\n-\n-poly16_t\n-test_vget_lane_p16_beyond (poly16x4_t in)\n-{\n- /* { dg-error \"lane 4 out of range 0 - 3\" \"\" {target *-*-*} 0 } */\n- return vget_lane_p16 (in, 4);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_p8_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_p8_indices_1.c\ndeleted file mode 100644\nindex 5dc8dc47afef..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_p8_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-poly8_t\n-test_vget_lane_p8_before (poly8x8_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 7\" \"\" {target *-*-*} 0 } */\n- return vget_lane_p8 (in, -1);\n-}\n-\n-poly8_t\n-test_vget_lane_p8_beyond (poly8x8_t in)\n-{\n- /* { dg-error \"lane 8 out of range 0 - 7\" \"\" {target *-*-*} 0 } */\n- return vget_lane_p8 (in, 8);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s16_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s16_indices_1.c\ndeleted file mode 100644\nindex c65fb40721a2..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s16_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-int16_t\n-test_vget_lane_s16_before (int16x4_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 3\" \"\" {target *-*-*} 0 } */\n- return vget_lane_s16 (in, -1);\n-}\n-\n-int16_t\n-test_vget_lane_s16_beyond (int16x4_t in)\n-{\n- /* { dg-error \"lane 4 out of range 0 - 3\" \"\" {target *-*-*} 0 } */\n- return vget_lane_s16 (in, 4);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s32_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s32_indices_1.c\ndeleted file mode 100644\nindex 1f95137832dc..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s32_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-int32_t\n-test_vget_lane_s32_before (int32x2_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 1\" \"\" {target *-*-*} 0 } */\n- return vget_lane_s32 (in, -1);\n-}\n-\n-int32_t\n-test_vget_lane_s32_beyond (int32x2_t in)\n-{\n- /* { dg-error \"lane 2 out of range 0 - 1\" \"\" {target *-*-*} 0 } */\n- return vget_lane_s32 (in, 2);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s64_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s64_indices_1.c\ndeleted file mode 100644\nindex e449797fe54c..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s64_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-int64_t\n-test_vget_lane_s64_before (int64x1_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 0\" \"\" {target *-*-*} 0 } */\n- return vget_lane_s64 (in, -1);\n-}\n-\n-int64_t\n-test_vget_lane_s64_beyond (int64x1_t in)\n-{\n- /* { dg-error \"lane 1 out of range 0 - 0\" \"\" {target *-*-*} 0 } */\n- return vget_lane_s64 (in, 1);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s8_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s8_indices_1.c\ndeleted file mode 100644\nindex 77e94860f1d0..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s8_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-int8_t\n-test_vget_lane_s8_before (int8x8_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 7\" \"\" {target *-*-*} 0 } */\n- return vget_lane_s8 (in, -1);\n-}\n-\n-int8_t\n-test_vget_lane_s8_beyond (int8x8_t in)\n-{\n- /* { dg-error \"lane 8 out of range 0 - 7\" \"\" {target *-*-*} 0 } */\n- return vget_lane_s8 (in, 8);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u16_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u16_indices_1.c\ndeleted file mode 100644\nindex 77fb3c8057c3..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u16_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-uint16_t\n-test_vget_lane_u16_before (uint16x4_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 3\" \"\" {target *-*-*} 0 } */\n- return vget_lane_u16 (in, -1);\n-}\n-\n-uint16_t\n-test_vget_lane_u16_beyond (uint16x4_t in)\n-{\n- /* { dg-error \"lane 4 out of range 0 - 3\" \"\" {target *-*-*} 0 } */\n- return vget_lane_u16 (in, 4);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u32_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u32_indices_1.c\ndeleted file mode 100644\nindex e670626a060e..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u32_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-uint32_t\n-test_vget_lane_u32_before (uint32x2_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 1\" \"\" {target *-*-*} 0 } */\n- return vget_lane_u32 (in, -1);\n-}\n-\n-uint32_t\n-test_vget_lane_u32_beyond (uint32x2_t in)\n-{\n- /* { dg-error \"lane 2 out of range 0 - 1\" \"\" {target *-*-*} 0 } */\n- return vget_lane_u32 (in, 2);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u64_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u64_indices_1.c\ndeleted file mode 100644\nindex 44d5a4d9e016..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u64_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-uint64_t\n-test_vget_lane_u64_before (uint64x1_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 0\" \"\" {target *-*-*} 0 } */\n- return vget_lane_u64 (in, -1);\n-}\n-\n-uint64_t\n-test_vget_lane_u64_beyond (uint64x1_t in)\n-{\n- /* { dg-error \"lane 1 out of range 0 - 0\" \"\" {target *-*-*} 0 } */\n- return vget_lane_u64 (in, 1);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u8_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u8_indices_1.c\ndeleted file mode 100644\nindex b452d56c9c13..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u8_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-uint8_t\n-test_vget_lane_u8_before (uint8x8_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 7\" \"\" {target *-*-*} 0 } */\n- return vget_lane_u8 (in, -1);\n-}\n-\n-uint8_t\n-test_vget_lane_u8_beyond (uint8x8_t in)\n-{\n- /* { dg-error \"lane 8 out of range 0 - 7\" \"\" {target *-*-*} 0 } */\n- return vget_lane_u8 (in, 8);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_f32_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_f32_indices_1.c\ndeleted file mode 100644\nindex 8a50ed2ac117..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_f32_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-float32_t\n-test_vgetq_lane_f32_before (float32x4_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 3\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_f32 (in, -1);\n-}\n-\n-float32_t\n-test_vgetq_lane_f32_beyond (float32x4_t in)\n-{\n- /* { dg-error \"lane 4 out of range 0 - 3\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_f32 (in, 4);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_f64_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_f64_indices_1.c\ndeleted file mode 100644\nindex 492b1ae66b90..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_f64_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-float64_t\n-test_vgetq_lane_f64_before (float64x2_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 1\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_f64 (in, -1);\n-}\n-\n-float64_t\n-test_vgetq_lane_f64_beyond (float64x2_t in)\n-{\n- /* { dg-error \"lane 2 out of range 0 - 1\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_f64 (in, 2);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_p16_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_p16_indices_1.c\ndeleted file mode 100644\nindex caa41b269c3d..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_p16_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-poly16_t\n-test_vgetq_lane_p16_before (poly16x8_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 7\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_p16 (in, -1);\n-}\n-\n-poly16_t\n-test_vgetq_lane_p16_beyond (poly16x8_t in)\n-{\n- /* { dg-error \"lane 8 out of range 0 - 7\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_p16 (in, 8);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_p8_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_p8_indices_1.c\ndeleted file mode 100644\nindex 38caa27e1081..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_p8_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-poly8_t\n-test_vgetq_lane_p8_before (poly8x16_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 15\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_p8 (in, -1);\n-}\n-\n-poly8_t\n-test_vgetq_lane_p8_beyond (poly8x16_t in)\n-{\n- /* { dg-error \"lane 16 out of range 0 - 15\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_p8 (in, 16);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s16_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s16_indices_1.c\ndeleted file mode 100644\nindex 0f4e4f58253b..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s16_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-int16_t\n-test_vgetq_lane_s16_before (int16x8_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 7\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_s16 (in, -1);\n-}\n-\n-int16_t\n-test_vgetq_lane_s16_beyond (int16x8_t in)\n-{\n- /* { dg-error \"lane 8 out of range 0 - 7\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_s16 (in, 8);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s32_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s32_indices_1.c\ndeleted file mode 100644\nindex 68133b4bdcac..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s32_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-int32_t\n-test_vgetq_lane_s32_before (int32x4_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 3\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_s32 (in, -1);\n-}\n-\n-int32_t\n-test_vgetq_lane_s32_beyond (int32x4_t in)\n-{\n- /* { dg-error \"lane 4 out of range 0 - 3\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_s32 (in, 4);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s64_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s64_indices_1.c\ndeleted file mode 100644\nindex 4ac607fe2cc8..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s64_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-int64_t\n-test_vgetq_lane_s64_before (int64x2_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 1\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_s64 (in, -1);\n-}\n-\n-int64_t\n-test_vgetq_lane_s64_beyond (int64x2_t in)\n-{\n- /* { dg-error \"lane 2 out of range 0 - 1\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_s64 (in, 2);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s8_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s8_indices_1.c\ndeleted file mode 100644\nindex 0e44dbc1851c..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s8_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-int8_t\n-test_vgetq_lane_s8_before (int8x16_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 15\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_s8 (in, -1);\n-}\n-\n-int8_t\n-test_vgetq_lane_s8_beyond (int8x16_t in)\n-{\n- /* { dg-error \"lane 16 out of range 0 - 15\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_s8 (in, 16);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u16_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u16_indices_1.c\ndeleted file mode 100644\nindex 5ccea06f9ee7..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u16_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-uint16_t\n-test_vgetq_lane_u16_before (uint16x8_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 7\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_u16 (in, -1);\n-}\n-\n-uint16_t\n-test_vgetq_lane_u16_beyond (uint16x8_t in)\n-{\n- /* { dg-error \"lane 8 out of range 0 - 7\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_u16 (in, 8);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u32_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u32_indices_1.c\ndeleted file mode 100644\nindex bfbf081cbe25..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u32_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-uint32_t\n-test_vgetq_lane_u32_before (uint32x4_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 3\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_u32 (in, -1);\n-}\n-\n-uint32_t\n-test_vgetq_lane_u32_beyond (uint32x4_t in)\n-{\n- /* { dg-error \"lane 4 out of range 0 - 3\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_u32 (in, 4);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u64_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u64_indices_1.c\ndeleted file mode 100644\nindex a0d426e84adb..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u64_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-uint64_t\n-test_vgetq_lane_u64_before (uint64x2_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 1\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_u64 (in, -1);\n-}\n-\n-uint64_t\n-test_vgetq_lane_u64_beyond (uint64x2_t in)\n-{\n- /* { dg-error \"lane 2 out of range 0 - 1\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_u64 (in, 2);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u8_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u8_indices_1.c\ndeleted file mode 100644\nindex c9ad6634d7bf..000000000000\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u8_indices_1.c\n+++ /dev/null\n@@ -1,17 +0,0 @@\n-/* { dg-do assemble } */\n-\n-#include <arm_neon.h>\n-\n-uint8_t\n-test_vgetq_lane_u8_before (uint8x16_t in)\n-{\n- /* { dg-error \"lane -1 out of range 0 - 15\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_u8 (in, -1);\n-}\n-\n-uint8_t\n-test_vgetq_lane_u8_beyond (uint8x16_t in)\n-{\n- /* { dg-error \"lane 16 out of range 0 - 15\" \"\" {target *-*-*} 0 } */\n- return vgetq_lane_u8 (in, 16);\n-}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/simd/vset_lane_s16_const_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vset_lane_s16_const_1.c\nindex b28d67f74b07..e50bf312b543 100644\n--- a/gcc/testsuite/gcc.target/aarch64/simd/vset_lane_s16_const_1.c\n+++ b/gcc/testsuite/gcc.target/aarch64/simd/vset_lane_s16_const_1.c\n@@ -9,7 +9,7 @@ int\n main (int argc, char **argv)\n {\n int16x4_t in = vcreate_s16 (0xdeadbeef00000000ULL);\n- /* { dg-error \"must be a constant immediate\" \"\" { target *-*-* } 0 } */\n+ /* { dg-error \"must be an integer constant expression\" \"\" { target *-*-* } 0 } */\n int16x4_t out = vset_lane_s16 (65535, in, argc);\n return vget_lane_s16 (out, 0);\n }\ndiff --git a/gcc/testsuite/gcc.target/aarch64/vmov_n_1.c b/gcc/testsuite/gcc.target/aarch64/vmov_n_1.c\nindex 528cb84402f8..fde2ab3f4978 100644\n--- a/gcc/testsuite/gcc.target/aarch64/vmov_n_1.c\n+++ b/gcc/testsuite/gcc.target/aarch64/vmov_n_1.c\n@@ -65,7 +65,7 @@ extern void abort (void);\n for (i = 0; i < n; i++)\t\t\t\t\t\t\\\n {\t\t\t\t\t\t\t\t\t\\\n INHIB_OPTIMIZATION;\t\t\t\t\t\t\\\n- a = GET_ELEMENT (reg_len, data_len, data_type) (b, i);\t\t\\\n+ a = b[i];\t\t\t\t\t\t\t\t\\\n if ((a) != (c))\t\t\t\t\t\t\t\\\n \treturn 1;\t\t\t\t\t\t\t\\\n }\t\t\t\t\t\t\t\t\t\\\n", "prefixes": [ "v1", "3/6" ] }